• 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.

vba cellen leegmaken indien een cel een bepaalde waarde heeft, op meerdere werkbladen

Status
Niet open voor verdere reacties.

rbloeme

Gebruiker
Lid geworden
6 jan 2017
Berichten
11
Goedemiddag,

Ik heb een werkmap met daarin 20 dezelfde werkbladen, nu wil ik graag een knop op ieder werkblad die bepaalde cellen leeg maakt als één cel een bepaalde waarde heeft. Dit moet dan op alle 20 werkbladen uitgevoerd worden.
Dus als bv
Blad1 E134
Blad2 E134
Blad5 E134
Blad10 E134
ETC
op 0 staan dienen bepaalde cellen in die werkbladen leeg gemaakt te worden en in alle andere werkbladen die niet op 0 staan dan niet.
Ik ben al ruim 2 dagen aan het zoeken op internet zowel in het Nederlands als Engels, maar ik heb nog niemand gevonden met de zelfde vraag als ik.
Ik hoop dat iemand mij kan helpen
 
Ik denk zoiets:
Code:
Sub abc()
For Each Sh In ThisWorkbook.Sheets
    If Sh.Range("E134") = 0 Then
        Sh.Range("A1:A3,B4:B6,C7:C9").ClearContents
    End If
Next Sh
End Sub
(bereik van de cellen die leeggemaakt moet worden zelf even aanpassen)
 
bedankt voor de snelle reactie,

Met onderstaande code krijg ik fout 1004

Private Sub CommandButton4_Click()
Keuze = MsgBox("Delete! ?", vbQuestion + vbYesNo, "Empty worksheet!")
Select Case Keuze
Case vbYes

For Each Sh In ThisWorkbook.Sheets
If Sh.Range("E134") = 0 Then
Sh.Range("verw1.6,verw1.1,verw1.4,verw1.5,verw1.2").ClearContents
End If
Next Sh
Case vbNo
' do nothing
End Select
End Sub
 
Zonder voorbeeldbestand blijft het gissen wat er precies fout gaat. Ik vermoed dat het in die named range zit...
Code:
("verw1.6,verw1.1,verw1.4,verw1.5,verw1.2")
 
Allereerst is je aanpak niet handig; je hebt achter élk TB-sheet dezelfde macro's hangen, die allemaal hetzelfde doen. Zet de macro gewoon in een module en laat elk knop naar één en dezelfde macro verwijzen.

Een tweede ding wat fout gaat is dat de macro niet voor álle sheets uitgevoerd moet worden maar alleen voor de sheets TB1 tm TB20. Daarnaast is de waarde van E134 niet 0, maar "".
Pas de macro-code daarom als volgt aan:
Code:
For Each Sh In ThisWorkbook.Sheets
    If Sh.Name Like "TB#*" Then
        If Sh.Range("E134") = "" Then
            Sh.Range("verw1.6,verw1.1,verw1.4,verw1.5,verw1.2").ClearContents
        End If
    End If
Next Sh
Als laatste blijft dan nog wel over die named ranges.... Dat zijn gedeeltes van samengevoegde cellen en je kan niet slechts een deel van een samengevoegde cel leegmaken.
 
Bekijk bijlage (Orgineel)Transportbescheid 3.1.xlsm

Ik heb nu een waarde A1 gezet om het te testen, en de marco in een module gezet.

Als tb1 niet "leeg" is de waarde in E134 groter dan 0 en als hij leeg gemaakt mag worden staat deze cel op 0. op tb1 werkt het niet

echter met "" ipv 0 werkt het op alle andere bladen wel
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan