Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
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

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

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.

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
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
Anzeige
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
Danke :-) owT
28.01.2010 15:31:25
Jockel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige