Clever-Excel-Forum

Normale Version: Code vereinfachen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
ja. Mit dem Replace wird dann "Label" weggenommen und die Zahl bleibt, für die Zuweisung zur Zeile.
Erstelle einfach mal ein neues UF, füge dort ein Label ein und packe den Code dazu ...

Ich vermute, Du musst in der Schleife noch eine Prüfung einfügen, z.B.

If Left(myLabel.Name,5)="Label" Then
...
End If

(Du hast sicher nicht nur Label auf dem UF, oder?)
In einer neuen Excel Datei geht der code.

Sehr komisch. 

Liegt es vielleicht daran das die Labels auf Multipages sind?


Danke

26865

Bei der Schleife musst du aufpassen, wenn neben den Labals 1- 366 noch weitere dazukommen, die du anders behandeln willst oder die anders benannt sind als "LabelX". Ein Zähler von 1-366 könnte in diesem Fall auch passen.

Je nachdem, was und wie du es darstellen willst, könnten andere Steuerelemente einfacher zu handhaben sein. Eine Listbox kommt vielleicht in Betracht.
Code:
Private Sub Userform_Initialize()
  for j =1 to 366
    Me("Label" & j) = dateserial(year(date),1,j)
  next
End Sub

oder
Code:
Private Sub Userform_Initialize()
  for j =1 to 366
    controls("Label" & j) = dateserial(year(date),1,j)
  next
End Sub

Aber besser verwendet man ein Listbox:

Code:
Private Sub Userform_Initialize()
  Listbox1.List=[index(date(year(today()),1,row(1:366)),)]
End Sub
Vielleicht ist es so einfacher zu verstehen, wie ich das genau brauche.

Wenn ich die Label auf die Userform direkt schiebe, geht es ohne Probleme.

Sobald die Label auf eine der Multiseiten kommen gibts die Fehlermeldung.


Vielen Dank für eure Hilfe
Warum ignorierst du gute Vorschläge ?
Die Codes die du mir geschrieben hast, funktionieren nicht, und die Listbox ist nicht das wie ich das aussehen lassen will.

Ich werde mir deine Datei anschauen. 

Vielen Dank
Hallo,

Code:
Private Sub UserForm_Click()
  Dim i As Long
  With Me.MultiPage1.Pages(0)
    For i = 1 To 10
      .Controls("Label" & i).Caption = Cells(i + 1, 1).Value
    Next i
  End With
  With Me.MultiPage1.Pages(1)
    For i = 11 To 20
      .Controls("Label" & i).Caption = Cells(i + 1, 1).Value
    Next i
  End With
End Sub

Gruß, Uwe
Ah, ha du suchst keine Hilfe doch Komplettlösungen.
Hallöchen,

Trotzdem auch noch eine Frage von mir - wozu soll das gut sein, Daten auf 36 Multipages mit je 10 bzw. zuletzt 5 oder 6 Labels, zu verteilen?

Der Anwender kann sicher nur eine sehen. Da könnte man eine Seite gestalten und die Daten dynamisch zur Anzeige bringen, Auswahl z.B. per

- mit einer Combobox mit Auswahl 1 bis 36 (oder Page 1 bis Page 36, oder was auch immer da stehen soll)
- mit einem Scrollbalken, Grenzen 1 bis 36, und einem Label, wo man den gescrollten "Seitenstand" sieht.
- oder eben statt der Combobox eine Listbox zur Auswahl

Die in der Combo- oder Listbox anzuzeigenden Daten könnte man auch per Verknüpfung aus einem Blatt holen, sodass man da bei Änderungen den Code nicht mehr anzufassen braucht.

Wenn Du statt den Labels Textboxen nimmst, mit grauem Hintergrund ... kannst Du denen in der ControlSource auch einen Zellbezug zuweisen und brauchst keinen Code. Außer bei der vorgeschlagenen dynamischen Seite - da würde die erste Zuweisung von A1:A10 ja auf der zweiten Seite nicht mehr passen. Die Bezüge für die 10er Blöcke lassen sich ja einfach berechnen, im Prinzip n+(Combobox.Value-1)*10
Seiten: 1 2 3