Informationen und Beispiele zum Thema CommandButton | |
---|---|
![]() |
CommandButton-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema Userform | |
---|---|
![]() |
Userform-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema TextBox | |
---|---|
![]() |
TextBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: ich verstehe mein eigenen Code nicht mehr :-((
von: Jockel
Geschrieben am: 28.01.2010 14:35:53
Hi,
ich habe eine Userform, darauf sind ein paar Textboxen und ein paar Comboboxen. Wenn ich die Textbox'n ausgefüllt habe, zB so:
Combobox12 = "EIN"
Textbox5 = "12,-"
Textbox6 = "EUR"
Combobox13 = "Bemerkung"
und ich auf den Button klicke, dann soll in meinem Sheet "Daten" an der zeile 24 in der Spalte D "12,-" und in der Spalte E "EUR" stehn.
klicke ich nochmal drauf, soll das gleiche in der zeile 25 passieren. Die bedingung dabei ist, das in der Combobox12 "EIN" steh.
Steht in der Combobox dagegen "AUS", soll der Inhalt aus Textbox5 in der spalte F und Textbox6 in G landen. also versetzt
Also, bei jedem Klick auf den Button soll ein neuer Datensatz unterhalb des bereits bestehenden
angelegt werden mit dem Unterschied, wenn "EIN" dann in D und E und bei "AUS" in F und G.
Aber irgend wie funktioniert das nicht richtig.
Hier mal der Code, vielleicht ist es ja nur ein kleiner Fehler. Wenn es zu kompliziert ist, kann ich auch eine Besipieldatei basteln.
Danke mal
Joachim
Private Sub CommandButton1_Click() Dim ii As Long With Worksheets("Daten") ii = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 If ii < 24 Then ii = 24 .Cells(ii, 2) = ComboBox9.Value 'Spalte B .Cells(ii, 3) = TextBox4.Value 'Spalte C .Cells(ii, 4 - (ComboBox12 = "EIN")) = TextBox5.Value 'Spalte D .Cells(ii, 5 - (ComboBox12 = "EIN")) = ComboBox6.Value 'Spalte E .Cells(ii, 6 - (ComboBox12 = "AUS")) = TextBox5.Value 'Spalte F .Cells(ii, 7 - (ComboBox12 = "AUS")) = ComboBox6.Value 'Spalte G .Cells(ii, 8) = ComboBox13.Value 'Spalte H End If If ii >= 25 Then .Cells(ii, 2) = ComboBox9.Value 'Spalte B .Cells(ii, 3) = TextBox4.Value 'Spalte C .Cells(ii, 4 - (ComboBox12 = "EIN")) = TextBox5.Value 'Spalte D .Cells(ii, 5 - (ComboBox12 = "EIN")) = ComboBox6.Value 'Spalte E .Cells(ii, 6 - (ComboBox12 = "AUS")) = TextBox5.Value 'Spalte F .Cells(ii, 7 - (ComboBox12 = "AUS")) = ComboBox6.Value 'Spalte G .Cells(ii, 8) = ComboBox13.Value 'Spalte H End If End With End Sub
Betrifft: AW: ich verstehe mein eigenen Code nicht mehr :-((
von: Hajo_Zi
Geschrieben am: 28.01.2010 14:41:46
Halo Joachim,
Du ermittelst die letzte Zeile in Spalt B und nicht in D;E oder F;G.
Die Zahl ist nur korrekt falls letzte Zelle in der Spalte nicht belegt.
Für den Teil
End If If ii >= 25 Then könnte man auch ElseIf ii >= 25 Then
Betrifft: AW: ich verstehe mein eigenen Code nicht mehr :-((
von: Jockel
Geschrieben am: 28.01.2010 14:52:34
Hallo Hajo,
ja, das war eigentlich so beabsichtigt. Die Combobox9 auf der userform ist ein Pflichtfeld, da steht immer was drin. das passt so weit.
Das Problem ist, das die Datensätze zwar schön untereinander geschrieben werden, aber die zuordnung der Spalten stimmt nicht.
Wenn ich den Code ausführe, und Combobox12 ist zB "EIN" , dann landen die Inhalte aus TextBox5.Value und ComboBox6.Value nicht in D und E, bezw, bei Combobox12 ist zB "AUS" nicht in F und G
Kann man so also kein Fehler feststellen ?
Danke
Joachim
Betrifft: AW: ich verstehe mein eigenen Code nicht mehr :-((
von: Hajo_Zi
Geschrieben am: 28.01.2010 15:13:13
Hallo Joachim,
ich verstehe das Problem nicht, ich habe paar Kommentare ran geschrieben.
Private Sub CommandButton1_Click() Dim ii As Long With Worksheets("Daten") ' hier wird die letzte Zeile in Spalte B ermittelt ii = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 If ii < 24 Then ii = 24 ' hier wird die Zeilennummmer in die geschrieben wird auf 24 gesetzt .Cells(ii, 2) = ComboBox9.Value 'Spalte B .Cells(ii, 3) = TextBox4.Value 'Spalte C .Cells(ii, 4 - (ComboBox12 = "EIN")) = TextBox5.Value 'Spalte D ComboBox12 = "EIN" _ ergibt -1 bei wahr und 0 bei Falsch .Cells(ii, 5 - (ComboBox12 = "EIN")) = ComboBox6.Value 'Spalte E .Cells(ii, 6 - (ComboBox12 = "AUS")) = TextBox5.Value 'Spalte F .Cells(ii, 7 - (ComboBox12 = "AUS")) = ComboBox6.Value 'Spalte G .Cells(ii, 8) = ComboBox13.Value 'Spalte H ElseIf ii >= 25 Then .Cells(ii, 2) = ComboBox9.Value 'Spalte B .Cells(ii, 3) = TextBox4.Value 'Spalte C .Cells(ii, 4 - (ComboBox12 = "EIN")) = TextBox5.Value 'Spalte D .Cells(ii, 5 - (ComboBox12 = "EIN")) = ComboBox6.Value 'Spalte E .Cells(ii, 6 - (ComboBox12 = "AUS")) = TextBox5.Value 'Spalte F .Cells(ii, 7 - (ComboBox12 = "AUS")) = ComboBox6.Value 'Spalte G .Cells(ii, 8) = ComboBox13.Value 'Spalte H End If End With End SubGruß Hajo
Betrifft: Danke dir auch owT
von: Jockel
Geschrieben am: 28.01.2010 15:31:53
Betrifft: aber ich!
von: Rudi Maintaire
Geschrieben am: 28.01.2010 14:50:21
Hallo,
so sollte das klappen:
Private Sub CommandButton1_Click() Dim ii As Long With Worksheets("Daten") ii = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 If ii < 24 Then ii = 24 .Cells(ii, 2) = ComboBox9.Value 'Spalte B .Cells(ii, 3) = TextBox4.Value 'Spalte C .Cells(ii, 4 - 2 * (ComboBox12 = "AUS")) = TextBox5.Value 'Spalte D oder F .Cells(ii, 5 - 2 * (ComboBox12 = "AUS")) = ComboBox6.Value 'Spalte E oder G .Cells(ii, 8) = ComboBox13.Value 'Spalte H End With End Sub
Betrifft: AW: aber ich!
von: Jockel
Geschrieben am: 28.01.2010 15:18:39
Hallo Rudi,
Danke, das scheint nun zu funktionieren. Ich hätte nur eine Frage, ich verstehe dein Code nämlich auch nicht :-)
Wie unterscheidet der Code "EIN" und "AUS" ?
hier ist doch nur "AUS" definiert ?
Gruss
Joachim
Betrifft: kleine Erklärung
von: Rudi Maintaire
Geschrieben am: 28.01.2010 15:25:26
Hallo,
hier ist doch nur "AUS" definiert ?
Betrifft: Danke :-) owT
von: Jockel
Geschrieben am: 28.01.2010 15:31:25