• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Samengevoegde cellen automatisch leegmaken

Status
Niet open voor verdere reacties.

ErikdV

Gebruiker
Lid geworden
16 jun 2011
Berichten
81
Ik heb een werkblad met meerdere tabbladen. Na gebruik wil ik telkens in kolom B de cellen leegmaken.
Het betreft een aantal aaneengesloten rijen met samengevoegde cellen die altijd een waarde hebben.
Onderstaande VBA werkt met niet-samengevoegde cellen.

Public Sub tijd_leeg()
For j = 2 To 12
Sheets(j).Columns(2).SpecialCells(2).Areas(1).ClearContents
Next
End Sub

Waarschijnlijk worden samengevoegde cellen gezien als en reeks cellen, waarvan er slechts 1 een is gevuld.
Hierdoor wordt het niet meer gezien als 1 area.

Hoe los ik dit op?
 
Je wilt geheel B leegmaken? Maak er dan van:
Code:
Sheets(j).Columns(2).ClearContents
Rebmog
 
niet hele kolom leegmaken

Nee, alleen een aaneengesloten aantal rijen.
Daaronder komt eerst een lege rij en vervolgens een cel met een SOM-functie voor het totaal.
Deze cel mag dus niet worden geleegd.

Het is ook lastig om een vast bereik te definieren, want het aantal rijen en ook het aantal samengevoegdee cellen wijzigt nogal eens.

Hierbij een klein voorbeeldbestand:
Bekijk bijlage b-leegmaken.xlsx
 
Ik heb het als volgt opgelost: voor elk tabblad heb ik de te legen cellen een naam gegeven, tijd1, tijd2 enz..
De macro luidt nu als volgt:
Dim j As Integer
For j = 1 To 6
Worksheets((Trim(Str$(j)))).Activate
Range("tijd" & (Trim(Str$(j)))).ClearContents
Next
For j = 8 To 12
Worksheets((Trim(Str$(j)))).Activate
Range("tijd" & (Trim(Str$(j)))).ClearContents
Next

Ik zit nog met één probleem: Tabblad 7 was niet meer relevant en is dus uit het werkblad verwijderd.
Nu heb ik 2 for/next loops, maar kan dit ook in 1 loop, met bijv. een array?
 
Ik denk dat je kunt volstaan met onderstaande code:
Code:
Private Sub CommandButton1_Click()
    Dim j As Integer
    For j = 1 To 12
        If j <> 7 Then Sheets(j).Range("tijd" & j).ClearContents
    Next
End Sub

Rebmog
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan