Eliminare le celle vuote in colonna excel

di il
23 risposte

Eliminare le celle vuote in colonna excel

Buonasera a tutto il gruppo.
Avrei bisogno di un vostro aiuto, se possibile.
Tramite un codice in VB6:
For Each rr In xlCartella.Sheets("Foglio2").Range("AR1:AR452")
If rr.Offset(0, 0).Value = 1 Then
rr.Offset(0, -3).Value = ""
Exit For
End If
Next
cancello il contenuto di quella cella. Il problema è che non riesco a eliminare quella riga, come avviene in excel con il codice
rr.Delete shift:=xlUp
Grazie a chi può darmi una dritta

23 Risposte

  • Re: Eliminare le celle vuote in colonna excel

    Solo una curiosità considerato che non capisco se il tuo intento con il VB6 è eliminare celle o righe in Excel, quel codice per un ciclo For/Next che hai pubblicato verrà eseguito una sola volta non appena trovata nel range una cella valorizzata "1" visto che subito dopo viene eseguito un Exit For.
  • Re: Eliminare le celle vuote in colonna excel

    Cerco di spiegarmi meglio. Attraverso un codice precedente, nella colonna AR potrebbe esserci il valore 1, una o più volte.
    Il mio codice elimina il contenuto della cella AO in corrispondenza del valore 1 della cella posta sulla colonna AR. Naturalmente elimina solo una volta, anche se ci dovessero essere più valori 1 nella colonna AR. E questo va bene così. Quello che vorrei ottenere, una volta eliminato il contenuto della cella (per esempio AO5), è anche la eliminazione della cella AO5, cioè riportando in su tutti gli altri valori della colonna AO, in modo che non ci siano celle vuote nella colonna AO.
    Sul foglio excel questo avviene col codice
    Delete shift:=xlUp
    che però non funziona in Vb6.
  • Re: Eliminare le celle vuote in colonna excel

    Scrivi
    
    rr.Delete (XlDirection.xlUp)
    
  • Re: Eliminare le celle vuote in colonna excel

    Ciao Oregon, grazie per l'aiuto.
    Seguendo il tuo consiglio, ho aggiornato il mio codice
    If xlCartella.Sheets("Foglio2").Range("AS1") > 0 Then
    On Error Resume Next
    Dim rr As Object, XlDirection
    For Each rr In xlCartella.Sheets("Foglio2").Range("AR1:AR452")
    If rr.Offset(0, 0).Value = 1 Then
    rr.Offset(0, -3).Delete (XlDirection.xlUp)
    Exit For
    End If
    Next
    il codice non dà errore, (infatti il successivo messaggio conferma l'avvenuta eliminazione), ma in realtà tutto rimane come prima, nel senso che il valore della cella AO non è stato nemmeno cancellato.

    Per adesso, in via provvisoria, ho inserito un codice nel vba del foglio2 di excel, creando un colonna di appoggio in AT:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("AT1:AT452").Value = Range("AO1:AO452").Value
    Dim ur As Integer
    With Sheets("Foglio2")
    ur = Range("AO" & Rows.Count).End(xlUp).Row
    For n = 1 To ur
    If .Cells(n, 41).Value = "" Then
    .Range("AT" & n & ":" & "AT" & n).Delete shift:=xlUp
    Range("AO1:AO452").Value = Range("AT1:AT452").Value
    End If
    Next n
    End With
    End Sub
    Per adesso il codice funziona benissimo.
  • Re: Eliminare le celle vuote in colonna excel

    Usa i tag CODE per il codice nel forum (dovresti già saperlo).

    Elimina la On Error Resume Next temporaneamente e controlla se ci sono errori durante l'esecuzione
  • Re: Eliminare le celle vuote in colonna excel

    Ho eliminato la "On Error Resume Next"
    Questo è il codice aggiornato che ho eseguito:
    If xlCartella.Sheets("Foglio2").Range("AS1") > 0 Then
     Dim rr As Object, XlDirection, xlUp
     For Each rr In xlCartella.Sheets("Foglio2").Range("AR1:AR452")
     If rr.Offset(0, 0).Value = 1 Then
     rr.Offset(0, -3).Delete (XlDirection.xlUp)
     Exit For
     End If
     Next
    ma mi dà il seguente errore:
    Errore di run-time '424':
    Necessario oggetto
    La cosa curiosa è che in un altra parte del progetto ho inserito questo codice:
    Dim n As Long
    For n = 2 To xlCartella.Sheets("Foglio3").Range("E1") - 10
    If xlCartella.Sheets("Foglio3").Cells(n, 11) = xlCartella.Sheets("Foglio3").Range("I1") Then
    xlCartella.Sheets("Foglio3").Range("A" & n & ":" & "C" & n).Delete
    Questo codice cancella sia il contenuto che la parte di riga "A:C"
    Per completezza ribadisco che non deve essere eliminata la riga intera, ma solo il range di riferimento (nel mio caso solo la colonna AO)
  • Re: Eliminare le celle vuote in colonna excel

    Dove???
  • Re: Eliminare le celle vuote in colonna excel

    Mi evidenzia di giallo la seguente riga:
    rr.Offset(0, -3).Delete (XlDirection.xlUp)
  • Re: Eliminare le celle vuote in colonna excel

    Se devi eliminare la riga a cosa ti serve l'offset?
    [Code] rr.Delete (XlDirection.xlUp) e soprattutto hai aggiunto il Riferimento alla libreria Excel?
  • Re: Eliminare le celle vuote in colonna excel

    Se elimino l'Offset, il codice mi elimina il valore della cella AR. Invece deve eliminare il valore della cella AO.
    Cosa vuoi dire con "hai aggiunto il Riferimento alla libreria Excel". Non ho capito. Può darsi che sia questo il motivo dell'errore. Qual è il Riferimento da aggiungere?
  • Re: Eliminare le celle vuote in colonna excel

    Non si capisce molto ... vuoi eliminare le righe non le colonne, giusto?

    Quindi per 3 righe precedenti devi indicare Offset(-3, 0)
  • Re: Eliminare le celle vuote in colonna excel

    Prendiamo in esame il codice che ho postato ieri alle 18.57.
    Supponiamo che il valore di AR5 sia 1.
    Il codice correttamente mi cancella il valore presente in AO5, mentre le celle AO6, AO7, AO8, ecc. hanno un loro valore.
    A questo punto la cella AO5 rimane vuota.
    Io vorrei eliminare anche la cella AO5 in modo che il valore di AO6 passi a AO5, il valore di AO7 passi a AO6, ecc. Cioè, nella colonna AO, da AO1 a AO.... non ci siano celle vuote.
  • Re: Eliminare le celle vuote in colonna excel

    Quindi tu vuoi eliminare l'intera RIGA 5 non la cella

    Hai provato con l'offset che ti ho suggerito?
  • Re: Eliminare le celle vuote in colonna excel

    No. Non voglio eliminare tutta la riga di AO5!
    Voglio eliminare solo la cella AO5, facendo scalare in su le celle sotto.
    L'offset che mi hai proposto non fa nulla.
    Volevo allegare le immagini di esempio, non ci sono riuscito.
Devi accedere o registrarti per scrivere nel forum
23 risposte