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

Variabele sheetnames

Status
Niet open voor verdere reacties.

jtbeetje

Gebruiker
Lid geworden
20 mrt 2013
Berichten
8
Goeiemiddag allemaal,

Ik ben bezig met een excel-sheet te maken met een overzicht van alle debiteuren. Elke debiteur staat op een apart excel-sheet. Op sheet 1 is een controlepaneel met daarop een aantal knoppen, verwijzend naar die debiteuren. Omdat het veel verschillende sheets zijn, zijn de sheets standaard verborgen tenzij je een knop aanklikt. Zo hoort bij de knop GoToDebiteur1 de volgende code:
Code:
Private Sub GoToDebiteur1_Click()
If Sheets("Debiteur1").Visible = True Then
    Sheets("Controlepaneel").Visible = True
    Sheets("Debiteur1").Visible = False
    Sheets("Controlepaneel").Select
    GoToDebiteur1.BackColor = &H8000000B
Else
        Sheets("Debiteur1").Visible = True
        Sheets("Debiteur1").Select
        GoToDebiteur1.BackColor = &H8000000D
End If
End Sub

Dit werkt prima, alleen is dit niet praktisch om deze tekst 130 keer te copy-pasten en telkens de debiteurnaam aan te passen. Daarom heb ik in module 1 het volgende gezet:

Code:
Global naam As String
Function shtnaam() As Sheets
shtnaam = naam
End Function

Global naam2 As String
Global kc As CommandButton
kc = Sheets("Controlepaneel").naam2

In module 2
Code:
If shtnaam.Visible = True Then
    Sheets("Controlepaneel").Visible = True
    shtnaam.Visible = False
    Sheets("Controlepaneel").Select
    Cancel = True
Else
        shtnaam.Visible = True
        shtnaam.Select
End If
End Sub

En bij de knop GoToDebiteur1:

Code:
naam = "Debiteur1"
naam2 = "GoToDebiteur1"
KnopControlepaneel

Ik krijg dan echter de foutmelding "Ongeldig gebruik van een eigenschap" bij de regel "shtnaam = naam" in de module. Wat doe ik fout?
 
Ik heb en soortgelijk bestandje (formule1 schema) gemaakt met 1 tabblad altijd zichtbaar en een andere die je selecteert.
Dashboard zou overeenkomen met jou controle paneel
De diverse landen komen overeen met jou debiteuren.

http://www.mijnbestand.nl/Bestand-KEI8IUADGJCF.xlsm


Misschien dat je het aan kunt passen aan jou bestand.
 
Beste popipipo,

Dank voor je reactie.
Ik zie in je bestand dat je werkt met sheetnummers die je declareert in variabele i.
Maar ik kan alleen vinden "i = 2" in module 1. Hoe werkt het dan als bijvoorbeeld i 3 moet zijn (als je bijv. naar het derde sheet wil gaan?)
 
maak er i=3 van zowel in 'sub verbergen()' als in 'sub tonen()'
Zo blijft i1 en i2 altijd zichtbaar.
 
Ik heb het geprobeerd aan te passen aan mijn bestand. Ik krijg nu de foutmelding "Toewijzen aan een matrix is niet mogelijk".
Wat ik wil, is dat überhaupt technisch mogelijk? (vast een domme vraag, maar toch) Ik snap eerlijk gezegd niet waarom mijn code niet werkt. Ongetwijfeld mijn gebrek :confused:
Thanks voor je antwoord in ieder geval.
 
Global naam As String
Function shtnaam() As Sheets
shtnaam = naam
End Function

Global naam2 As String
Global kc As CommandButton
kc = Sheets("Controlepaneel").naam2

Regel 2: Probeer eens Function shtnaam() As String
 
Dank voor de tip. Ik krijg dan echter de foutmelding "Ongeldige kwalificatie" in de tweede regel van module 2 (if shtnaam.Visible = True Then)...
 
Dan wordt het misschien toch tijd om je bestandje zonder gevoelige informatie hier te plaatsen.
 
Hartstikke bedankt voor je moeite. Dit gedeelte werkt nu feilloos.
Rest mij nog één vraag; ik wil eigenlijk dat de achtergrondkleur van de commandbutton op het controlepaneel verandert op het moment dat het bijbehorende sheet actief wordt. Ik heb daar in navolging van uw bestanden de volgende modules van gemaakt:
Code:
Sub KnopControlepaneel()
Set sc = Sheets("Controlepaneel")
If shtnaam.Visible = True Then
    sc.Visible = True
    shtnaam.Visible = False
    sc.Select
    Cancel = True
Else
        shtnaam.Visible = True
        shtnaam.Select
End If
CommandButtonClicked
End Sub
Code:
Sub CommandButtonClicked()
If shtnaam.Visible = True Then
CMD.BackColor = &H8000000D
Else
CMD.BackColor = &H8000000B
End If
End Sub
Code:
Function CMD() As CommandButton
Set CMD = Sheets("Controlepaneel").naam2
End Function


Dan krijg ik echter een foutmelding: "Deze eigenschap of methode wordt niet ondersteund door dit object" in regel Set CMD = Sheets("Controlepaneel").naam2
Even daarvoor is naam2 als globale string gedeclareerd. Hoe kan ik deze foutmelding oplossen?
 
het lijkt mij handiger om de globale variabelen direct toe te kennen in de lokale subs
( bv Private Sub GoToDebiteur2_Click() )
en de functions die je daar voor gebruikt te verwijderen.dus dan krijg je zoiets:
Code:
Private Sub GoToDebiteur2_Click()
    Set shtNaam = Sheets("Debiteur 2")
    Set kc = GoToDebiteur2
    KnopControlepaneel
End Sub
die naam en naam2 vervallen dan ook
 
Laatst bewerkt:
Ik heb je suggestie verwerkt in mijn bestand. Echter krijg ik nu nog steeds de foutmelding 438, Deze eigenschap of methode wordt niet ondersteund door dit project. Ik heb kc gedeclareerd als globale commandbutton, en de foutopsporing geeft de fout in deze regel:
Code:
Sheets("Controlepaneel").kc.BackColor = &H8000000D
In de lokale sub GoToDebiteur2 staat de code: Set kc As GoToDebiteur2.

Waarschijnlijk zie ik iets over het hoofd. Maar wat?

Alvast bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan