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

userform labels in serie benoemen

Status
Niet open voor verdere reacties.

evhaarst

Gebruiker
Lid geworden
25 jul 2001
Berichten
112
Ik heb een userform waarin ik wel 100 labels heb. Automatisch heten ze label1, label2, label3 etc...
Ik wil die allemaal een eigen naam geven, maar dat is nogal bewerkelijk. Bovendien wil ik de naam kunnen veranderen, afhankelijk van waarden in het werkblad. De waarden staan in onderstaand voorbeeld in de hele 1e kolom vh werkblad "x".
Ik kom er niet goed uit. Ik heb iets geprobeerd in de trant van:

dim labelnaam as object
en dan onder userform.activate

for i=1 to 100
labelnaam = label & i
labelnaam.caption = sheets("x").cells(i,1)
next i

Maar labelnaam wil hij niet pakken. Ook niet met Set ervoor.
Heeft iemand een oplossing?
 
EvHaarst,

waar ben jij mee bezig? Het lijkt me makkelijker hiervoor een listbox te gebruiken, en daarvan de opmaak aan te passen. Hierdoor kan je ook iets krijgen met hetzelfde uitzicht als Labels, maar met dit voordeel dat je veel makkelijker items toe kan voegen, of weglaten. Ook moet je dan geen rekening meer houden met scrollbars en dergelijke.

Maar goed, je zou nog kunnen denken dat ik het anders niet kan. Hier is de oplossing:

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 100
Me.Controls("Label" & i).Caption _
= Worksheets("x").Cells(i, 1).Value
Next
End Sub

Luc
 
Het userform geeft, afhankelijk van een geselecteerde optie, een bepaald deel van een tabel weer. Die tabel gegevens komen dan als onveranderbaar gegeven in de labels te staan. Daarom wil ik die labels kunnen veranderen.
Maar ik ga jouw oplossing proberen. Alvast bedankt.
 
het lukt niet zo.
Ik krijg de melding "onjuiste parameter". Heb je het zelf geporbeerd hiermee?
Volgens mij moet je die Controlnaam tevoren definieren ongeveer zoals ik eerder aangaf. In de instructie zoals jij hier aangeeft kan dat dacht ik niet.
Verder zoeken dus....
 
Tuurlijk is dit allemaal getest. Maar het is niet echt duidelijk waar uw beperkingen zitten.

Hier heb je een voorbeeld met 4 mogelijkheden. Er zijn natuurlijk wel meerdere mogelijkheden, die ik hier nog niet demonstreer (zoals de besturingselementen pas aanmaken bij het openen van het userform)

Luc
 

Bijlagen

Mooi stukje werk. Jouw file werkt prima.
Als ik dit echter kopieer naar mijn file, met de noodzakelijke aanpassing van namen, gaat het echter mis. Het Userform heeft bij mij de naam FrmTabellen. Bij aanroepen via een knop die de module aanstuurt met FrmTabellen.Show krijg ik een foutmelding op deze module van 1 regel...
Snap ik niet. Die naam kan anders wel. Of kan het Userform niet uit een ander Userform worden aangeroepen (daar staat de knop in)?
En wat doet dat Option Explicit ook alweer?
Moet de module onder de Modules staan, of moet het onder de modules horend bij het Userform, of maakt dat niet uit en kan het beide?
 
Hoi, :D

Option Explicit dwingt jouw al je variabelen te declareren! (dit is ideaal bij compileren..en haalt dus de fouten uit de code)

Dus dingen zoals:

Dim source As Range
Dim ColumnCount As Long
Dim FirstColumn As Long
Dim ColumnWidthArray() As Double

Met betrekking tot de code, deze is idd, meestal op meerdere objecten in de projectverkenner toe te passen.

Wellicht een idee om je sheet als bijlage bij te voegen.

See Yah! :thumb:
 
Zoals Joost al zei: Option Explicit dwingt u om variabelen te declareren. Zo voorkomt u in een later stadium schrijffouten.
Maar ook raad ik u absoluut aan om deze optie te gebruiken, en ook uw variabelen GOED te declareren. Dit spaart immers uw geheugen, en maakt uw macro's sneller. Bovendien krijg je zelf een beter begrip van waar je mee bezig bent. Dit was trouwens één van de eerste zaken die ik zelf leerde bij VBA.

De event

Private Sub UserForm_Initialize()

staat steeds in de programmacode van het userform zelf. Dubbelklik er op, om de code te kunnen bekijken.

En verder: zoals Joost ook zei, is het makkelijker als we uw probleemgeval in praktijk kunnen bekijken.

Luc
 
labels doorlopen

een late afsluitende reactie van mijzelf. Eerdere goedbedoelde antwoorden waren niet de oplossing.
Na lang zoeken recent elders op een Amerikaanse soort Helpmij-website de oplossing gevonden:
r = 4 'definieert de rij
For p = 1 to 100
FrmTotalen.Controls("label" & p).Caption = Sheets("x").Cells(r, p)
Next p

Zo doorloop je alle labelnamen! (hehe)
 
Hai, :D

Sorry hoor maar Luc heeft jou dat antwoord al gegeven:
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 100
Me.Controls("Label" & i).Caption _
= Worksheets("x").Cells(i, 1).Value
Next
End Sub
Dus ja...volgens mij had je heel dat amerikaanse forum niet nodig...;) (Jij gebruikt exact dezelfde loop)
 
je hebt helemaal gelijk.
Maar destijds werkte dat om een of andere reden niet. Denk dat ik toch een foutje in de code heb gemaakt toen. En nu had ik niet meer teruggekeken.
 
Hai E, :D

Maakt niet uit hoor..
Met code direct vanuit internet overplakken in de VBE gaan zo vaak dingen mis.

See Yah! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan