Sto scrivendo una macro che deve fare le seguenti operazioni:
- controllare il contenuto di alcune celle
- se il contenuto di tutte le celle è vuoto ELIMINARE l'insieme di righe cui fanno parte le celle controllate e SPOSTARE IL TUTTO IN ALTO
- se il contenuto di almeno una cella non è vuoto passare al blocco di celle successivo.
Per il contenuto delle celle ho trovato queste istruzioni in http://archi.forumup.it/about325-.html&highlight=:
- Codice: Seleziona tutto
Sub Elimina()
Dim CL As Range
Dim x As String
For Each CL In Range("A:A").Cells 'ovviamente devi indicare la TUA colonna
If CL = "" Then
CL.Select
CL.EntireRow.Delete
End If
Next CL
End Sub
Quando vado a fare il controllo del contenuto delle celle, non so per quale strano motivo, la macro vi scrive VERO così da non verificare mai il then dell'if (VERO è il valore assunto dalla variabile cell....).
Di seguito riporto il mio codice anticipando che c'è un errore sulla posizione dell'incremento degli indici i e j:
- Codice: Seleziona tutto
Sub cancRip()
'UltimaRiga = Range("B" & Rows.Count).End(xlUp).Row
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim n As Integer
Dim cell As Range
i = 3
j = 7
'n = Range("B" & Rows.Count).End(xlUp).Row
'InStr(1, c.FormulaR1C1, "", vbTextCompare)
'Range("C3,D3,E3,G3,G4,G5,G6,G7"): questo è il range di celle che mi interessa. Utilizzando i e j "generalizzo" il range
n = 100
For k = 1 To n
Selection = Range("C" & i & "," & "D" & i & "," & "E" & i & "," & "G" & i & "," & "G" & i + 1 & "," & "G" & i + 2 & "," & "G" & i + 3 & "," & "G" & i + 4).Select 'seleziono le celle che mi interessano
For Each cell In Selection
If cell.FormulaR1C1 = "" Then 'faccio il controllo sul loro contenuto, ma la macro già ci scrive VERO
Range("B" & i & ":" & "G" & j).Select 'in caso seleziono il range che mi interessa
Selection.Delete Shift:=xlUp 'cancello la seleziono e faccio salire le righe
Else
i = i + 5 'se almeno una cella è piena allora mi sposto alle 5 righe successive
j = j + 5
End If
Next
Next
End Sub
Perchè scrive vero?
Come controllo la stringa contenuta nella cella senza modificarla?
Il For Each, in particolare, che tipo di variabili e tipi di dato si aspetta?
In allegato c'è un file di esempio sulla struttura del foglio (lo screenshot è riportato sul topic http://www.pc-facile.com/forum/viewtopic.php?f=26&t=75010)
Spero di essermi fatta capire.
Grazie a chiunque voglia aiutarmi.
antom