Cellen leegmaken met voorwaarden

  • Onderwerp starter Onderwerp starter MBBS
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

MBBS

Gebruiker
Lid geworden
7 feb 2006
Berichten
269
Ik zoek een macro die ik in mijn bestaande macro kan plakken.

Als de cel in kolom "E" leeg is moet de cel in kolom "D" leeggemaakt worden.
De range is E9 tot E29
 
zoiets?

Code:
Sub test()
    Dim LoopCell As Variant
        
    For Each LoopCell In Cells.Range("e9:e29")
        If LoopCell.Value = "" Then
            LoopCell.Offset(0, -1).Value = ""
        End If
    Next LoopCell
End Sub
 
Een mogelijkheid
Code:
Sub tst()
With Sheets("Blad1")
    For i = 9 To 29
        If .Cells(i, 5) = "" Then .Cells(i, 4) = ""
    Next
End With
End Sub
Nog eentje
Code:
Sub tst()
sq = [D9].Resize(29, 2)
    For i = 1 To UBound(sq)
        If sq(i, 2) = "" Then sq(i, 1) = ""
    Next
[D9].Resize(UBound(sq), UBound(sq, 2)) = sq
End Sub
 
Laatst bewerkt:
Die 2e is redelijk ingenieus hoewel ik dat soort code nooit zou willen onderhouden :)

echter is je rechthoek nu niet te diep, met 29 cellen down vanaf 9 ;)
 
Goed opgemerkt ( zat nog met m'n eerste lus in gedachten):thumb:
Code:
Sub tst()
sq = [D9].Resize([COLOR="red"]21[/COLOR], 2)
    For i = 1 To UBound(sq)
        If sq(i, 2) = "" Then sq(i, 1) = ""
    Next
[D9].Resize(UBound(sq), UBound(sq, 2)) = sq
End Sub
Voordeel van deze is dat er slechts 1 lees- en schrijfbewerking is (vooral interessant bij grotere bereiken) terwijl je bij een For Each of For Next alle cellen 1 per 1 moet passeren
 
Laatst bewerkt:
De ene code is al wat ingewikkelder dan de andere...
Maar ik weet wat er moet gebeuren, kan ze dus ontcijferen, ik ga ze nu proberen wat aan te passen voor andere sheets.

Hartelijk dank !
 
Het kan gewoon zo:

Code:
Range("E9:E29").Cells.SpecialCells(xlCellTypeBlanks).Offset(, -1).ClearContents
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan