Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Sintassi vba excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Sintassi vba excel

Postdi antonio.lanciano » 17/12/22 17:55

Salve, devo inserire in una macro vba su excel la funzione di selezione di un determinato range dinamico. Specifico che il range sulla medesima colonna A è costituito da n formule che restituiscono o campo vuoto "" oppure una stringa di testo con valori alfanumerici. La funzione deve recuperare/selezionare solo le celle (non necessariamente consecutive) della medesima colonna la cui formula restituisce la stringa di testo escludendo le celle che restituiscono campo vuoto. Grazie
antonio.lanciano
Newbie
 
Post: 5
Iscritto il: 17/12/22 17:49

Sponsor
 

Re: Sintassi vba excel

Postdi Marius44 » 18/12/22 10:40

Ciao
Bella descrizione di ciò che vorresti fare.
Ma chi volesse aiutarti deve crearsi lo scenario (magari sbagliando)?
Perchè non alleghi il tuo file (senza dati sensibili)?

Ciao,
Mario
Marius44
Utente Senior
 
Post: 607
Iscritto il: 07/09/15 22:00

Re: Sintassi vba excel

Postdi Anthony47 » 18/12/22 10:53

Aggiungo a quanto già suggerito da Mario, che il suggerimento e' da legare anche a quel che va fatto successivamente con le celle selezionate; nel senso che potrebbe anche essere piu' efficace selezionare tutto e nella fase successiva condizionare il trattamento al fatto che la cella non sia "nulla" (e in questo caso potrebbe anche non essere fondamentale il file dimostrativo)
Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 18653
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sintassi vba excel

Postdi antonio.lanciano » 20/12/22 09:01

Salve, grazie per le risposte. Sotto vi allego la macro così come l'ho fatta recuperando on line diversi suggerimenti.

Codice: Seleziona tutto
Sub RefreshAll_Scrivedat()
'Updateby Extendoffice 20161109
    Dim xpt As PivotTable
    With ActiveSheet
        .Protect UserInterfaceOnly:=True
        For Each xpt In .PivotTables
            xpt.RefreshTable
        Next xpt
    End With
UR = Range("A" & Rows.Count).End(xlUp).Row
Perc = "C:\Users\pippo\Desktop\"
Open Perc & Range("M2").Value & "output.dat" For Output As #1
For RR = 1 To UR
    Print #1, Range("A" & RR).Value
Next RR
Close #1
End Sub
antonio.lanciano
Newbie
 
Post: 5
Iscritto il: 17/12/22 17:49

Re: Sintassi vba excel

Postdi antonio.lanciano » 20/12/22 09:08

In sintesi la macro mi genera un file .dat sul desktop. Ma il mio problema è che la macro restituisce il file sempre pari al totale della colonna A fino all'ultima riga (8997) perchè effettivamente trova la presenza della formula anche se la formula restituisce campo vuoto. Ho necessità che invece la macro mi crei il file sul desktop in funzione delle sole righe che contengono un campo NON vuoto. Avevo pensato di modificare la macro inserendo la seguendo sintassi
Range("A" & Range("D1").value)
al posto dell'attuale
Range("A" & Rows.Count)
Dove in D1 avevo messo una formula che semplicemente contasse i valori presenti nella colonna A, ma non funziona o mi da errore.

NB: la prima parte della macro è relativa alla protezione del foglio e non va modificata.

Potete aiutarmi? Grazie
antonio.lanciano
Newbie
 
Post: 5
Iscritto il: 17/12/22 17:49

Re: Sintassi vba excel

Postdi Anthony47 » 20/12/22 09:30

Il mio suggerimento e' che lavori sul ciclo di scrittura su file, modificando il ciclo For RR /Next RR come segue:
Codice: Seleziona tutto
For RR = 1 To UR
    If Len(Range("A" & RR).Value) > 0 Then
        Print #1, Range("A" & RR).Value
    End If
Next RR

In questo modo scriverai solo i valori non vuoti

Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 18653
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sintassi vba excel

Postdi antonio.lanciano » 20/12/22 14:03

Carissimo Anthony ti confermo che grazie alla tua modifica adesso la macro funziona perfettamente! Addirittura elimina anche righe vuote che si trovano tra righe con dati, tale che il risultato è un output privo di righe vuote. Una domanda vorrei però farti (per mia curiosità): vedo che tu dai il comando alla macro di considerare righe >0 tuttavia in queste righe abbiamo in realtà dati alfanumerici. Evidentemente il >0 corrisponde al <>"" in tal caso?

Grazie mille davvero! Sei davvero bravo! Grazie ancora, Antonio
antonio.lanciano
Newbie
 
Post: 5
Iscritto il: 17/12/22 17:49

Re: Sintassi vba excel

Postdi Anthony47 » 20/12/22 19:03

vedo che tu dai il comando alla macro di considerare righe >0 tuttavia in queste righe abbiamo in realtà dati alfanumerici. Evidentemente il >0 corrisponde al <>"" in tal caso?
Con la mia modifica la macro esegue il comando Print #1 solo sulle righe dove la lunghezza della stringa è maggiore di Zero; quindi salterà le celle vuote o contenenti ""

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18653
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sintassi vba excel

Postdi antonio.lanciano » 20/12/22 19:43

Ahhhh scusa Anthony, non avevo guardato con attenzione il testo della macro. Vedo che c'è appunto Len. Grazie ancora!

Un saluto
antonio.lanciano
Newbie
 
Post: 5
Iscritto il: 17/12/22 17:49


Torna a Applicazioni Office Windows


Topic correlati a "Sintassi vba excel":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti