[VBA] - Multipage Userform eingaben in Excel übertragen?
Servus Leute,
Ich habe ein Userform in Excel mit Multipage erstellt.
Nun möchte ich auf der letzten Multipage Seite einen Button einbauen. Auf Knopfdruck sollen dann alle Eingaben die vom User auf den einzelnen Multipageseiten gemacht worden sind in ein Excel Tabellenblatt übertragen werden.
Mein Ansatz war dem Button folgenden Code zu geben:
Dim sheet2 As Worksheet
Dim maxRow2 As Long
Dim check3 As Boolean
Set sheet2 = ActiveWorkbook.Worksheets(1)
maxRow2 = sheet2.Cells(sheet2.Rows.Count, "B").End(xlUp).Row
If CheckBox1.Value Then
sheet2.Cells(maxRow2 + 1, 9).Value = "ja"
Else
sheet2.Cells(maxRow2 + 1, 9).Value = "nein"
End If
sheet2.Cells(maxRow2 + 1, 13).Value = TextBox4.Value
Das funktioniert leider nicht wie ich es mir erhofft habe, auf Knopfdruck werden keine Daten übertragen. Ich habe die vermutung, dass nicht auf die Felder wie z.B. TextBox4 zugegriffen werden kann, weil die auf einer anderen Seite im Multipage sind.
Wie schaffe ich es an die Variablen ranzukommen. Ich hatte noch überlegt, im Code der jeweiligen Seite den Wert aus der Textbox in eine Variable zu setzen, die z.B. Global ist. Aber da bin ich auch schon wieder überfragt wie man das macht.
Außerdem habe ich noch eine Frage zu den Checkboxen.
Es soll folgende Möglichkeiten geben:
- Wenn Checkbox nicht angeklickt, dann kann man immer zu nächsten Kategorie ( Nächste Seite im Multipage)
- Wenn Checkbox angeklickt ist und variable x leer, dann soll man nicht weiter kommen (Msgbox)
- Wenn Checkbox angeklickt ist und variable x befüllt, dann kann man zur nächsten Kategorie (Nächste Seite im Multipage)
Für eine Checkbox habe ich das schon hinbekommen, aber wie mach ich das wenn es mehrere Checkboxen gibt. Weil ich glaube wenn ich das so mache wie bisher, dann wird das eine endlose anreihung von if bedingungen.
Diesen Code habe ich dann auf den Button gelegt, mit dem man zur nächsten Kategorie kommen soll oder eben halt nicht.
Dim sheet2 As Worksheet
Dim maxRow2 As Long
Dim check3 As Boolean
Set sheet2 = ActiveWorkbook.Worksheets(1)
maxRow2 = sheet2.Cells(sheet2.Rows.Count, "B").End(xlUp).Row
If CheckBox3.Value Then
If Test = False Then
MsgBox ("Kein Pfad angegeben")
Else
Dim iNextPage As Long
With Me.MultiPage1
iNextPage = .Value + 1
If iNextPage < .Pages.Count Then
.Pages(iNextPage).Visible = True
.Value = iNextPage
End If
End With
End If
Else
Dim iNextPage2 As Long
With Me.MultiPage1
iNextPage2 = .Value + 1
If iNextPage2 < .Pages.Count Then
.Pages(iNextPage2).Visible = True
.Value = iNextPage2
End If
End With
End If
Und als letztes würde ich gern noch wissen ob es möglich ist, zu unterbinden, dass der User oben im Multipage die Kategorie direkt anklicken kann und man halt nur über den "weiter" button zur nächsten kategorie kommt.
Gruß Chris
1 Antwort
- Auf die Elemente musst du per Multipage1.Pages(0).Checkbox1 oder Multipage1.Page1.Checkbox1 zugreifen, damit der die findet
- Mit den if's wird es nicht anders gehen, als da eine Reihe zu schreiben... if (Multipage1.Value=0) and ((not Multipage1.Pages(0).Checkbox2.Value) or (Multipage1.Pages(0).Checkbox2.value and (x <> ""))) Then ....
- Für das Abschalten der Tabs oben bleibt nur, von allen Seiten außer der aktuellen Seite Enabled auf False zu setzen ...
aktSeite = 3;
for i=0 to Multipage1.pages.count-1
Multipage1.pages(i).enabled = (aktSeite==i)
next
(PS: Alles ungetestet und ohne Gewähr)