Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

Forumthread: ich verstehe mein eigenen Code nicht mehr :-((

ich verstehe mein eigenen Code nicht mehr :-((
28.01.2010 14:35:53
Jockel

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

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ich verstehe mein eigenen Code nicht mehr :-((
28.01.2010 14:41:46
Hajo_Zi
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.

Anzeige
AW: ich verstehe mein eigenen Code nicht mehr :-((
28.01.2010 14:52:34
Jockel
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
Anzeige
AW: ich verstehe mein eigenen Code nicht mehr :-((
28.01.2010 15:13:13
Hajo_Zi
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
Anzeige
Danke dir auch owT
28.01.2010 15:31:53
Jockel
aber ich!
28.01.2010 14:50:21
Rudi Maintaire
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
Anzeige
AW: aber ich!
28.01.2010 15:18:39
Jockel
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
kleine Erklärung
28.01.2010 15:25:26
Rudi Maintaire
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
Anzeige
Danke :-) owT
28.01.2010 15:31:25
Jockel
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige