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

Hoe kan ik in Excel (VBA) voor een tabbladnaam verwijzen naar een cel?

Status
Niet open voor verdere reacties.

neicnarf

Gebruiker
Lid geworden
26 nov 2009
Berichten
10
Ik heb een klein vraagje geplaatst in het onderdeel 'VBA', maar misschien hoort deze toch op deze plaats thuis:

De naam van het tabblad dat ik nodig heb wordt in een cel (Hulpblad!K1) weggeschreven. Ik heb daarnaast een userform, zodra die geopend wordt, worden een aantal berekeningen gedaan op het tabblad 'hulpblad'. Aan het einde van die berekeningen wil ik dat het tabblad met de naam in hulpblad!K1 geopend wordt. Hoe krijg ik dat voor elkaar? Ik verwacht zelf ongeveer: 'worksheets(Hulpblad!K1).select', maar alles wat ik geprobeerd heb heeft niet het gewenste effect.
Als het niet duidelijk is wil ik wel proberen een voorbeeldbestandje te plaatsen.

Alvast bedankt!

Francien
 
neicnarf,

Word na de berekening het userform gesloten?
 
Zet dit eens onder de knop die het userform sluit.

Code:
[Hulpblad!K1].Select
Unload Me
 
Laatst bewerkt:
Nog niet, op de userform moeten een aantal waarden ingevuld worden. Dan is het handig om juist dat ene tabblad als 'achtergrond' te hebben staan. Misschien wel goed om te weten: de knop die aangeklikt word staat op het blad wat aan het einde geopend moet worden. Dus aan het begin van de macro (voor de berekeningen) is het nog het 'activesheet'.
 
Zomaaar een gedachte,
Als je in het begin van de code het betreffende blad al selecteer?
Code:
Sheets("Hulpblad").Select
    Range("K1").Select
 
Laatst bewerkt:
Dat probeerde ik al: op dat moment zet ik de naam in Hulpblad!K1.
Met onderstaande code krijg ik foutmelding 424. Ik verwacht dat dat aan de laatste regel ligt

[CPP]Private Sub UserForm_Initialize()

Worksheets("hulpblad").[k1] = ActiveSheet.Name


If ActiveSheet.Range("b16") = Null Then
MsgBox ("Eerst een verblijfsruimte toevoegen")
Exit Sub
End If
ComboBox1.RowSource = "B16:b" & ActiveSheet.Columns(2).SpecialCells(2).Count
Run "blad3.werkbladen"
ComboBox2.RowSource = "hulpblad!g2:g" & Worksheets("hulpblad").Columns(1).SpecialCells(2).Count


hulpblad!k1.Select

End Sub[/CPP]
 
Probeer het zo eens.
Code:
Sheets("Hulpblad").Select
    Range("K1").Select
 
Dan wordt de cel K1 op het hulpblad geseleteerd, maar niet het tabblad met die naam. Eigenlijk verwacht ik iets met 'indirect' te moeten doen, maar ik weet niet of dat mogelijk is?
 
Sorry foutje van mij.

Zo dan?
Code:
Sheets("Hulpblad!K1").Select
 
Laatst bewerkt:
Dan krijg ik fout 9 te zien: subscript valt buiten bereik.
Logisch denk ik: er bestaan ook geen tabblad met de naam 'hulpbladk1'. Wat is het verschil eigenlijk tussen sheets en worksheets?
 
Laatst bewerkt:
Die had ik er zelf al tussen gezet, maar dan geeft hij dezelfde melding.
 
Als ik dit onder een knop zet of in een stukje code er onder zet werkt het.
Code:
Sheets("Blad3").Select
Dus wat er mis gaat weet ik niet.
 
Ik denk dat 'blad 3' in dat geval de naam van het blad is. De naam van het blad dat ik wil openen, staat in een cel. Als je bijvoorbeeld in cel A1 van blad 3 de naam van 'blad 2' zet, hoe zou je dan Blad 2 geopend krijgen?
 
Met de oplossing van Wigi, krijg ik foutmelding 13: typen komen niet overeen. Betekend dat dat hij dan niet kan interpreteren wat in cel HulpbladK1 staat? Moeten er ergens " komen?
 
Zet dan nog een CStr( ... ) functie rondom [Hulpblad!K1].
 
Code:
Sheets([Hulpblad!K1].Value).Select
Of zoals Wigi al aangaf
Code:
Sheets(CStr([Hulpblad!K1])).Select
 
Geweldig! Daar heb ik nou dagen op zitten puzzelen. Allemaal heel er bedankt!
 
volledige code

Hoi Francien en anderen,

Zou je mij je volledige VBA code voor bovenstaand probleem kunnen geven?
Ik zit namelijk met hetzelfde probleem, maar ben helaas nog niet echt gevorderd in VBA.

Zou super zijn!
Gr.
Frank
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan