Herbers Excel-Forum - das Archiv
Userform
Informationen und Beispiele zu den hier genannten Dialog-Elementen:
- Userform von Peter vom 31.10.2003 00:09:22

|
Betrifft: Userform
von: Peter
Geschrieben am: 31.10.2003 00:09:22
Hallo an alle,
ich habe mir durch „wälzen“ in Büchern und nachfragen in Foren, folgendes Makro zusammengeschustert.
Über eine Userform füge ich Zeilen in eine „Liste“ ein, wenn neue Zeilen gebraucht werden - und klappt auch (wunderte mich da ich noch nicht oft mit Userformen gearbeitet habe).
Ich möchte mir die Arbeit jetzt noch einfacher machen und die Userform erweitern.
Das Problem zu erklären, wird wohl nicht so ganz einfach sein ... ich versuche es mal so
Die Userform soll erweitert werden mit „Textfeldern“ erweitert werden, wo folgende Angaben gemacht werden (ich vermute mal das es mit Textfeldern gemacht wird ...)
In einen Textfeld soll eine Zugnr. (5 Zahlen) stehen
Und in den beiden anderen Textfeldern soll ein Datum stehen (Format 31.10)
Es wäre jetzt gut, wenn in Spalte B (Zugnr.) – in allen eingefügten Zeilen der Wert aus der Userform übernommen wird
in Spalte „C“ das erste Datum
in Spalte „F“ das zweite Datum
genauso übernehmen.
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect Password:="test"
ActiveSheet.EnableAutoFilter = True
ActiveWindow.LargeScroll Down:=-20
Range("A5").Select
Dim Zeile As Long, Spalte As Integer
Dim InsertRows As Long, i As Long
Zeile = 7
Do
InsertRows = Application.InputBox("Wieviele Wagen hat der Zug ?", Type:=1)
If InsertRows > 50 Then MsgBox "wie Lang und wie Schwer soll der Zug denn sein ..."
Loop Until InsertRows <= 50
For i = 1 To InsertRows
Rows(6).EntireRow.Hidden = False
Range("A6").Offset(i, 0).EntireRow.Insert Shift:=xlDown
Rows(6).EntireRow.Copy Range("A6").Offset(i, 0).EntireRow
For Spalte = 1 To 10
If Not Cells(Zeile - 1 + i, Spalte).HasFormula Then Cells(Zeile - 1 + i, Spalte) = ""
Next Spalte
Next i
Rows(6).EntireRow.Hidden = True
' Warum das ??? ActiveWindow.DisplayHeadings = True
ActiveSheet.Protect Password:="test", Contents:=True, userInterfaceOnly:=True
Unload Me
Range("A7").Select
End Sub
Ich hoffe ich habe es nicht zu umständlich erklärt ?!?
Gruß Peter
Betrifft: AW: Userform
von: Galenzo
Geschrieben am: 04.11.2003 09:55:52
Hallo,
da hast du aber nicht mit Userforms gearbeitet, sondern nur mit 'ner simplen "Inputbox".
Das mag ja gehn, solange du nur EINEN oder zwei Werte eingeben willst. Aber sobald es - wie bei dir jetzt - noch mehr Werte werden, nervt das ewige "OK"-Geklicke dann doch, zumal du auch nachträglich keine Werte mehr ändern kannst.
Schau dir dann mal an, wie man eine Userform bastelt und diese aufruft/anzeigen läßt.
kurzer Tip: Im VBA-Fenster -"Einfügen/Userform". Dort kannst du dann mehrere "Inputboxen", dann "Textfelder" genannt, in dem Fenster plazieren, je nach dem, was du damit eingeben willst. Die in diese Textboxen eingegebenen Werte kannst du dann weiterverarbeiten, z.B. mit Textbox1.value - das ist dann der Wert aus der 1. Textbox
Ich habe dir erstmal noch eine Prozedur gebastelt, die noch mit Inputboxen arbeitet:
Private Sub CommandButton1_Click()
Dim Anzahl, ZugNr, Datum1, Datum2
Dim i As Integer
Anzahl = InputBox("Anzahl Wagen:", , 10)
If Anzahl = "" Then Exit Sub
ZugNr = InputBox("Zugnummer:", , 1)
Datum1 = InputBox("Datum1:")
Datum2 = InputBox("Datum2:")
Rows("1:" & Anzahl).Insert
For i = 1 To Anzahl
Cells(i, 2).Value = ZugNr
Cells(i, 3).Value = Datum1
Cells(i, 6).Value = Datum2
Next i
End Sub
Mit 'ner Userform wäre es dann ähnlich:
Private Sub CommandButton1_Click()
Dim Anzahl, i As Integer
Anzahl = Textbox1.Value
Rows("1:" & Anzahl).Insert
For i = 1 To Anzahl
Cells(i, 2).Value = Textbox2.Value
Cells(i, 3).Value = Textbox3.Value
Cells(i, 6).Value = Textbox4.Value
Next i
End Sub
Viel Erfolg!