[VBA EXCEL] cel selecteren in ander werkblad met button

Pagina: 1
Acties:
  • 5.772 views sinds 30-01-2008
  • Reageer

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06-2025
Hoi,

ik heb op een excel werkblad een commandbutton geplaatst.
Nu wil ik met de code achter de button een cel selecteren in een ander werkblad, maar dan krijg ik steeds een foutmelding
Foutmelding 1004, Methode Select van klasse range is mislukt.

Ik selecteer eerst het andere werkblad en dan selecteer ik de cel met Cells(1,1).select.

Als ik de code vanuit een macro run, gaat alles goed.
Ik heb al geprobeerd om i.p.v. Calls(1,1) bijv. Range("a1") te gebruiken, maar dat werkt ook niet.
Op MSDN kan ik het ook niet vinden.

Is het misschien zo dat een commandbutton op een werkblad alleen acties kan uitvoeren op het werkblad waar het op staat? als dat zo is moet ik het anders doen.
Of doe ik gewoon iets fout?

Verwijderd

Welke versie van Excel gebruik je ? In Excel2003 werkt deze code prima:
code:
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton1_Click()
    Dim S As Worksheet
    Dim R As Range
    
    Set S = ActiveWorkbook.Sheets("sheet2")
    S.Select
    
    Set R = S.Cells(2, 2)
    R.Select
End Sub


Het kan minder expliciet, deze aanpak geeft netjes de type-info.

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06-2025
Je hebt helemaal gelijk, het werkt namelijk hartsikke, bedankt

Wat ik alleen niet begrijp is dat wanneer ik gebruik maak van de macro recorder, ik de volgende code krijg;

Sheets("sheet1").Select
Range("A2").Select

Dit werk pefect vanuit een macro, maar niet vanuit de commandbutton.

Als ik er nu van maak (dit naar aanleiding vanjouw voorbeeld),

ActiveWorkbook.Sheets("sheet1").Select
Sheets("sheet1").Range("A2").Select

werkt het ook perfect.

Vraag is dan waarom ik er een verwijzing naar het actieve werkblad bij moet zetten?

Verwijderd

Excel gaat betrekkelijk gemakkelijk met object referenties om wanneer deze niet 100% expliciet zijn. Mijn voorbeeld is ook niet 100% expliciet, maar expliciet genoeg om aan Excel duidelijk te maken wat ik wil. 100% expliciete referenties in Excel
beginnen met
code:
1
"Application."


In je oude code
code:
1
Range("A2").Select

wordt de range "A2" aan "selection" (ook type range) toegekend. Selection is echter in dit geval CommandButton1 (geselecteerd bij klikken) en dat object heeft geen range "A2". De fout die optreedt komt dus uit de knop ;).

Mocht je naderhand nog weer je knop willen selecteren, dan kan dat ook nog:
code:
1
2
3
Dim W As Sheet1
Set W = Application.Worksheets("sheet1")
W.CommandButton1.Select

Besef wel wat er nu gebeurt: Excel heeft een nieuwe klasse Sheet1 afgeleid van Worksheet _/-\o_ . In de VBA-editor kan je nog voorzien in een andere class-name. CommandButton1 is een eigenschap deze klasse Sheet1.

  • chicky
  • Registratie: Augustus 2001
  • Laatst online: 01-06-2025
Thanks