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

Verwijzen naar verschillende ranges

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
535
Goed avond Helpmij-ers

Ik heb volgende code voor het leegmaken van bepaalde cellen in mijn sheets.

Code:
Private Sub cmdClearContents_Click()
      
Dim Range1 As Range, Range2 As Range, Range3 As Range, Range4 As Range, Range5 As Range

Regels = [BM1]

Set Range1 = Worksheets("Apothekers").Range("$AB$6:$AB$" & Regels)
Set Range2 = Worksheets("Kinesisten").Range("$AB$6:$AB$" & Regels)
Set Range3 = Worksheets("MedGen").Range("$AB$6:$AB$" & Regels)
Set Range4 = Worksheets("Tandartsen").Range("$AB$6:$AB$" & Regels)
Set Range5 = Worksheets("Specialisten").Range("$AB$6:$AB$" & Regels)

Range1.ClearContents
Range2.ClearContents
Range3.ClearContents
Range4.ClearContents
Range5.ClearContents

End Sub

Nu zou ik bij elke Set Range bereiken willen toevoegen en heb dit als volgt gedaan : vb voor Range1 :

Code:
Set Range1 = Worksheets("Apothekers").Range("$AB$6:$AB$" & Regels, "$AD$6:$AD$" & Regels, "$AF$6:$AF$" & Regels)

Maar dit werk niet. krijg de error : Fout 450 tijdens uitvoering: Onjuist aantal argumenten of ongeldige eigenschapstoewijzingen.

Wat doe ik fout?

Thanks

Pascal
 
Ongetest:
Code:
Set Range1 = Worksheets("Apothekers").Range("$AB$6:$AB$" & Regels & ",$AD$6:$AD$" & Regels & ",$AF$6:$AF$" & Regels)
 
Laatst bewerkt:
Probeer het zo eens:
Code:
Private Sub cmdClearContents_Click()
      
Dim Range1 As Range, Range2 As Range, Range3 As Range, Range4 As Range, Range5 As Range
On Error GoTo oeps
c00 = "|Apothekers|Kinesisten|MedGen|Tandartsen|Specialisten|"
    j = 0
 For Each sh In ThisWorkbook.Sheets
  If InStr(c00, "|" & sh.Name & "|") >0 Then
 With sh
   .Range("$AB$6:$AB$" &  .Range("BM1")).ClearContents
   .Range("$AD$6:$AD$" &  .Range("BM1")).ClearContents
   .Range("$AF$6:$AF$" &  .Range("BM1")).ClearContents
  End With
  End If
Next
oeps:
End Sub
 
Laatst bewerkt:
Timshel, Cobbe,

Beide oplossingen werken. :thumb:

Cobbe, jouw oplossing is nog iets te ver van mijn niveau :confused:

Om het zo te formuleren, daar ben ik nog niet.

Ik heb weer uit beide oplossingen geleerd.

Bedankt en nog een prettige zondag.

Greetz

Pascal
 
Cobbe,

Om de een of andere reden werkt de code enkel in de sheet "Apothekers".

Ik heb jouw code vervolledigd met alle Ranges en een paswoord-beveiliging toegevoegd.


Code:
Private Sub cmdClearContents_Click()
    
    Response = InputBox("Uw wachtwoord a.u.b.")
    If Response <> "12345" Then MsgBox "Foutief paswoord!!!": Exit Sub
    MsgBox "Ben u zeker dat u alle cellen wil leegmaken?", vbYesNo
        
Dim Range1 As Range, Range2 As Range, Range3 As Range, Range4 As Range, Range5 As Range
On Error GoTo oeps
c00 = "|Apothekers|Kinesisten|MedGen|Tandartsen|Specialisten|"
    j = 0: Regels = [BM1]
 For Each sh In ThisWorkbook.Sheets
  If InStr(c00, "|" & sh.Name & "|") = 1 Then
 With sh
   .Range("$AB$6:$AB$" & Regels).ClearContents
   .Range("$AD$6:$AD$" & Regels).ClearContents
   .Range("$AF$6:$AF$" & Regels).ClearContents
   .Range("$AI$6:$AI$" & Regels).ClearContents
   .Range("$AK$6:$AK$" & Regels).ClearContents
   .Range("$AM$6:$AM$" & Regels).ClearContents
   .Range("$AP$6:$AP$" & Regels).ClearContents
   .Range("$AR$6:$AR$" & Regels).ClearContents
   .Range("$AT$6:$AT$" & Regels).ClearContents
   .Range("$AW$6:$AW$" & Regels).ClearContents
   .Range("$AT$6:$AT$" & Regels).ClearContents
   .Range("$BA$6:$BA$" & Regels).ClearContents
  End With
  End If
Next
oeps:
End Sub

Ik meen mij te herrineren dat het zondag met de aanpassingen wel werkte (bij mij thuis) maar ik ben het niet meer zeker.:confused:

Nu op kantoor werkt het enkel in de sheet Apothekers"

Thanks

Pascal
 
Ja dat kan kloppen, er zit een foutje in de code en wel op deze regel:
If InStr(c00, "|" & sh.Name & "|") = 1 Then
moet zijn
If InStr(c00, "|" & sh.Name & "|") >0 Then
 
Code:
Private Sub cmdClearContents_Click()
  If  InputBox("Uw wachtwoord a.u.b.") <> "12345" Then  Exit Sub

  if MsgBox ("Ben u zeker dat u alle cellen wil leegmaken?", vbYesNo)=vbYes then
    For Each sh In ThisWorkbook.Sheets(array("Apothekers","Kinesisten","MedGen","Tandartsen","Specialisten"))
      For Each it In Array(0, 2, 4,7,9,11,14,16,18,21)
        sh.columns(28).specialcells(2).offset(5).specialcells(2).Offset(, it).clearcontents
      Next
    next
  End If
End Sub
 
snb,

Ik probeer altijd de aangereikte codes te begrijpen en te volgen wat ze precies doen en hoe...

Kan het zijn dat je in deze lijn :
Code:
For Each it In Array(0, 2, 4,7,9,11,14,16,18,21)
:confused:

2 kolommen vergeten bent toe te voegen? Of zie ik dat verkeerd? Moet er achteraan niet ,23,25 aan toegevoegd worden?

Indien ik het fout zie vergeef mij dan de "opmerking" :o


Greetz

Pascal
 
snb,

Ik heb jouw code ook getest zoals je ze hier hebt gegeven en ik krijg de error :

Run tim error '1004' - No cells were found :confused:

Groetjes

Pascal
 
Cobbe,

Er loopt toch nog iets fout :

in de "Regels" wordt het einde van de Range bepaald maar 2 en 3 rijen verder naar beneden (waar de totalen van de kolommen worden berekend = formule) verwijderd hij ook die formules
en zijn bijgevolg de cellen leeg.

Ik weet ondertussen dat dit zou komen door de "ClearContents" maar ik weet niet hoe ik dit kan oplossen.

Eigenlijk zou dit niet mogen gebeuren aangezien de range bepaald word waar de cellen moeten worden leeggemaakt, niet?




Groetjes
 
Dat heb ik niet bepaald, het aantal regels dat gewist wordt is aangegeven in BM1

Dus vanaf rij 6 (AB6) tot AB(regels)
Daar zal je het correct moeten instellen.
 
Cobbe,

Ik denk dat ik weet wat er gebeurd is...

Huidige situatie van mijn sheets :

Apothekers : BM1 = 24
Kinesisten : BM1 = 26
MedGen : BM1 = 35
Tandartsen : BM1 = 28
Specialisten : BM1 = 245

Ik denk dat Excel de BM1 gebruikt van de actieve sheet. Ik merk dit omdat in de sheet Specialisten maar t.e.m. rij 35 is leeggemaakt en niet t.e.m. 245

35 = de BM1 van de MedGen

Ik heb de test opnieuw gedaan vanuit Apothekers BM1 = 24 (de laagste BM1) --> Alle sheets zijn leeggemaakt t.e.m. rij 24.

Er zou moeten bepaald worden dat Excel telkens de BM1 moet gebruiken uit hun respectievelijke sheet en niet steeds uit de actieve sheet van dat moment.

Maar hoe? Zo ver ben ik nog niet :rolleyes:


Groetjes
 
Verplaats "Regels = [BM1]" naar direct onder de "for each sh" en maak er van:
Code:
Regels = Sh.Range("BM1").Value
 
OF zo:
Code:
Private Sub cmdClearContents_Click()
      
Dim Range1 As Range, Range2 As Range, Range3 As Range, Range4 As Range, Range5 As Range
On Error GoTo oeps
c00 = "|Apothekers|Kinesisten|MedGen|Tandartsen|Specialisten|"
    j = 0
 For Each sh In ThisWorkbook.Sheets
  If InStr(c00, "|" & sh.Name & "|") >0 Then
 With sh
   .Range("$AB$6:$AB$" &  .Range("BM1")).ClearContents
   .Range("$AD$6:$AD$" &  .Range("BM1")).ClearContents
   .Range("$AF$6:$AF$" &  .Range("BM1")).ClearContents
  End With
  End If
Next
oeps:
End Sub
 
ik krijg de error :

Run tim error '1004' - No cells were found :confused:
dan staan er geen gegevens in de cellen en is die wissen ook overbodig.


Code:
Private Sub cmdClearContents_Click()
  on error resume next
  For Each sh In ThisWorkbook.Sheets(array("Apothekers","Kinesisten","MedGen","Tandartsen","Specialisten"))
    For Each it In Array(0, 2, 4,7,9,11,14,16,18,21)
      sh.columns(28).specialcells(2).offset(5).specialcells(2).Offset(, it).clearcontents
    Next
  next
End Sub

PS. Het is irritant gebruikers steeds om wachtwoorden te vragen.
Op basis van de userame van de gebruiker kun je de knop 'cmdclearcontents' wel/niet zichtbaar maken.
Niet-geautoriseerde gebruikers krijgen zo niet eens de gelegenheid gegevens te wissen via deze knop.
 
Laatst bewerkt:
Cobbe, jkpieterse,

Werkt alle twee perfect. :thumb::thumb:

Thanks

greetz

Pascal
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan