variabele form namen en waardes (VBA)

Status
Niet open voor verdere reacties.

spawn666

Gebruiker
Lid geworden
16 mei 2004
Berichten
117
Goeie dag iedereen.

Ik weet dat het mogelijk is maar weet niet meer hoe.
Ik wil een " set visible = true " waarde toepassen op 3 items op een form. alleen is de naam van de items een "like" waarde van een ander form.
b.v.

form 1 staat 1.103

form 2 bevat 3 elementen : streep heet "1.103L" + veld "1.103" + vink box"1.103V"

ik heb een vba nodig die de 3 items uit form 2 zichtbaar maakt aan de hand van de 1.103 van form 1.

Iemand een idee?

thanks. :love:
 
Volgende heb heb ik gedaan maar werkt nog niet.
Ik heb eerst een macro gemaakt met vaste waardes erin.

DoCmd.OpenForm "4", acNormal, "", "", acReadOnly, acNormal
heb ik verandert naar:
DoCmd.OpenForm Forms![Extra Data]![Nverdieping], acNormal, "", "", acReadOnly, acNormal

(tot dus ver werkt)

Forms![4]![4].[021L].Visible = True
heb ik verandert naar:
Forms![Extra Data]![Nverdieping]!Forms![Extra Data]![Npatchnr].Forms![Extra Data]![Npatchnr"L"].Visible = True

Forms![4]![4].[021V].Visible = True
heb ik verandert naar:
Forms![Extra Data]![Nverdieping]!Forms![Extra Data]![Npatchnr].Forms![Extra Data]![Npatchnr"V"].Visible = True

Forms![4]![4].[021].Visible = True
heb ik verandert naar:
Forms![Extra Data]![Nverdieping]!Forms![Extra Data]![Npatchnr].Forms![Extra Data]![Npatchnr].Visible = True


onderste 3 werken niet :( wat doe ik verkeerd?
 
Ga met de VBEditor (Alt-F11) naar de gebeurtenisprocedure Activate van het formulier.
Daar kun je de eigenschappen van de elementen in het formulier instellen, bijv.

Code:
Private Sub Form_Activate()
  1.103L.visible=true
  1.103.visible=true
  1.103V.visible=true
End Sub
Je kunt ze ook benaderen met
Code:
Private Sub Form_Activate()
  Me("1.103L").visible=true
  Me("1.103").visible=true
  Me("1.103V").visible=true
End Sub
of
Code:
Private Sub Form_Activate()
  controls("1.103L").visible=true
  controls("1.103").visible=true
  controls("1.103V").visible=true
End Sub
als je de zichtbaarheid afhankelijk wil maken van de waarde in bijv. een tekstvak in een ander formulier:
stel formulier1 en formulier2
met op formulier1 een tekstvak 1.103
en in formulier2 de objecten 1.103, 1.103L en 1.103V
als de objecten van formulier2 zichtbaar moeten zijn als in tekstvak 1.103 van formulier1 "ja", staat en onzichtbaar als er in het tekstvak geen "ja" staat, dan dient bij de gebeurtenis Change van het tekstvak 1.103 in formulier1 het volgende te staan:
Code:
Private Sub 1.103_Change()
  formulier2.1.103L.visible=1.103.Text="ja"
  formulier2.1.103.visible=1.103.Text="ja"
  formulier2.1.103V.visible=1.103.Text="ja"
End Sub
of
Code:
Private Sub 1.103_Change()
  With formulier2
    .controls("1.103L").visible=Me("1.103").Text="ja"
    .controls("1.103").visible=Me("1.103").Text="ja"
    .controls("1.103V").visible=Me("1.103").Text="ja"
  End With
End Sub

Het gebruik van niet-alfanumerieke tekens voor de naam van objecten is af te raden.Het werkt verwarrend, omdat bijv. de punt binnen VBA voor andere doeleinden wordt gebruikt (onderscheid verzameling/deelverzameling).
 
Laatst bewerkt:
Dank voor je reactie. :thumb:
De waardes die je beschijft gebrijp ik. Maar bied helaas nog geen oplossing.:confused:

In alle codes revereer je naar de 1.103L waarde..deze is echter variabel en verschilt per weer te geven waarde. en daar zit nou net me probleem en me vraag. :rolleyes:

als ik de code zou schrijven zoals je hieronder beschrijft zou dit inhouden dat ik voor elke 3 waardes die ik per keer zichtbaar wil maken een afzonderlijke code moet schrijven.
voor een kleine hoeveelheid zou ik hier zelf ook voor kiezen het gaat hier echter om veeeel meer nummers. 1.103 is maar 1 van vele...het is een patch nummer namelijk. dit loopt op van 1.001 tot 1.141 en dat is nog voor voor de eerste verdieping. 2de verdieping zal starten met 2 enz enz...er zijn 9 verdiepingen totaal.

De rede dat ik de 1.103 type waarde uit een ander formulier wil plukken is omdat ik dan maar 3 vba regels nodig heb voor alle nummers.

Ik zou graag willen dat de vba code de waarde op pakt uit mijn formulier en gebruikt om "alle" (altijd 3) waar de b.v. 1.103 in voorkomt laat zien.

hoe ik er uiteindelijk mee wil werken is:
-je zoekt een gebruiker op.
-bij de gebruiker gegevens staat een patch nummer. en een macro(vba) knop "kaart"
-deze opend het kaart formulier voor die verdieping (als achtergrond van het formulier heb ik een jpg afbeelding van de plattegrond van de berdieping.)
- Als de patch van de gebruiker 5.106 is zal alleen deze patch zichtbaar zijn. (text vak+ lijn + vink boxje) :cool:

ik heb voor het gemak de punten er tussenuit gehaald.

hoop dat je me verder kunt helpen :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan