Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

ich verstehe mein eigenen Code nicht mehr :-(( | Herbers Excel-Forum


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

schreiben ist gering schneller.
GrußformelHomepage


  

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 Sub
Gruß 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

Gruß
Rudi


  

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 ?

reicht doch bei nur 2 möglichen Zuständen.
.Cells(ii, 4 - 2 * (ComboBox12 = "AUS")) ergibt +2, wenn CB12="AUS", ergo Spalte 6, ansonsten ist das 0, da 2*Falsch=0.

Gruß
Rudi


  

Betrifft: Danke :-) owT von: Jockel
Geschrieben am: 28.01.2010 15:31:25




Beiträge aus den Excel-Beispielen zum Thema "ich verstehe mein eigenen Code nicht mehr :-(("