|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2005
Messaggi: 5
|
[VBA EXCEL] Selezione dinamica da codice
4 Colonne senza intestazione sono il risultato di una sub alquanto complessa.
Io seleziono manualmente un numero n di righe di queste 4 colonne e faccio partire una seconda sub routine che mi fa ottenere ciò che voglio. ![]() I record di queste colonne variano ogni volta che rieseguo la prima sub. La selezione manuale è assai semplice, in pratica i primi n record caratterizzati dall'avere le celle tutte diversa da "" come da figura. Se riuscissi a selezionare tramite codice i primi n record tutti diversi da null potrei unire le due sub con un notevole vantaggio se si considera che la richiesta di selezione manuale avviene circa ogni 10 minuti e le elaborazioni complete possono durare 10-12 ore. Ultima modifica di nelsonblu : 28-05-2009 alle 15:33. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
Dim rigaInizio As Long
rigaInizio = 1
Dim limiteRigaMax As Long
limiteRigaMax = 100
Dim colonnaInizio As String
colonnaInizio = "A"
Dim colonnaFine As String
colonnaFine = "D"
Dim rangeDaCopiare As String
Dim R As Range
Dim riga As String
Dim indiceUltimaCella As Long
indiceCellaVuota = 0
Dim i As Long
For i = rigaInizio To limiteRigaMax
riga = colonnaInizio & i & ":" & colonnaFine & i
For Each R In Range(riga)
If R.Text = "" Then
indiceUltimaCella = i - 1
Exit For
End If
Next R
If indiceUltimaCella > 0 Then Exit For
Next i
rangeDaCopiare = colonnaInizio & rigaInizio & ":" & colonnaFine & indiceUltimaCella
'Msg di debug...
MsgBox rangeDaCopiare
|
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2005
Messaggi: 5
|
Acciderbolina, funziona!!!!
Ma chi sei? Mandrake!!!! Nel mio caso specifico mi serviva alla fine un Range(rangeDaCopiare).Select al posto del Msg grazie ancora |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Sì, mi sono fermato alla stringa del range di riferimento, dato che non sapevo quale metodo avresti usato per la selezione/copia del range interessato. In ogni caso il copia/incolla di un range non necessita affatto del trenino di istruzioni .Select / .Copy / .Select / .Paste, così come esce dal registratore Macro. Si può fare in modo più conciso e veloce, ad esempio : Codice:
Sheets("Foglio1").Range("A1:D10").Copy
Sheets("Foglio2").Range("A1").PasteSpecial
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:15.





















