Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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

Code erweitern!

Code erweitern!
09.12.2014 12:41:51
Andreas
Hallo Excelforum,
Ich komme bei einem Problem mal wieder nicht weiter.
Per Doppelklick in eine Zeile im Blatt "Besichtigungen" übernehme ich verschiedene Zellinhalte dieser Zeile in ein UserForm (AbholungBesicht) und öffne dieses.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
zeile = Target.Row
AbholungBesicht.TextBox1 = Worksheets("Besichtigungen").Cells(zeile, 4).Value
AbholungBesicht.TextBox2 = Worksheets("Besichtigungen").Cells(zeile, 5).Value
AbholungBesicht.ComboBoxStr = Worksheets("Besichtigungen").Cells(zeile, 6).Value
AbholungBesicht.TextBox4 = Worksheets("Besichtigungen").Cells(zeile, 7).Value
AbholungBesicht.ComboBox5 = Worksheets("Besichtigungen").Cells(zeile, 8).Value
AbholungBesicht.ComboBoxOrt = Worksheets("Besichtigungen").Cells(zeile, 9).Value
AbholungBesicht.TextBox11 = Worksheets("Besichtigungen").Cells(zeile, 11).Value
AbholungBesicht.ComboBox21 = Worksheets("Besichtigungen").Cells(zeile, 12).Value
AbholungBesicht.ComboBox22 = Worksheets("Besichtigungen").Cells(zeile, 13).Value
AbholungBesicht.ComboBox23 = Worksheets("Besichtigungen").Cells(zeile, 14).Value
AbholungBesicht.ComboBox24 = Worksheets("Besichtigungen").Cells(zeile, 15).Value
AbholungBesicht.ComboBox25 = Worksheets("Besichtigungen").Cells(zeile, 16).Value
AbholungBesicht.ComboBox26 = Worksheets("Besichtigungen").Cells(zeile, 17).Value
AbholungBesicht.ComboBox27 = Worksheets("Besichtigungen").Cells(zeile, 18).Value
AbholungBesicht.ComboBox28 = Worksheets("Besichtigungen").Cells(zeile, 19).Value
AbholungBesicht.ComboBox29 = Worksheets("Besichtigungen").Cells(zeile, 20).Value
AbholungBesicht.ComboBox30 = Worksheets("Besichtigungen").Cells(zeile, 21).Value
AbholungBesicht.ComboBox31 = Worksheets("Besichtigungen").Cells(zeile, 22).Value
AbholungBesicht.ComboBox32 = Worksheets("Besichtigungen").Cells(zeile, 23).Value
AbholungBesicht.ComboBox33 = Worksheets("Besichtigungen").Cells(zeile, 24).Value
AbholungBesicht.ComboBox34 = Worksheets("Besichtigungen").Cells(zeile, 25).Value
AbholungBesicht.ComboBox35 = Worksheets("Besichtigungen").Cells(zeile, 26).Value
AbholungBesicht.ComboBox36 = Worksheets("Besichtigungen").Cells(zeile, 27).Value
AbholungBesicht.ComboBox37 = Worksheets("Besichtigungen").Cells(zeile, 28).Value
AbholungBesicht.ComboBox38 = Worksheets("Besichtigungen").Cells(zeile, 29).Value
AbholungBesicht.ComboBox39 = Worksheets("Besichtigungen").Cells(zeile, 30).Value
AbholungBesicht.ComboBox40 = Worksheets("Besichtigungen").Cells(zeile, 31).Value
AbholungBesicht.CheckBoxBesichtJa = True
AbholungBesicht.Show
End Sub

Danach wird noch in 3 Comboboxen ein Wert gewählt und per Commandbutton werden die Inhalte der Text- und Comboboxen in ein anderes Blatt (Abholung) eingetragen.
Hier mal ein Auszug:

Private Sub CommandButton1_Click()
Dim zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
zeile = 21
Set wks = Sheets("Abholung")
wks.Range("B22:B43").ClearContents
For intI = 21 To 40
Set objControl = Me.Controls("Combobox" & Format(intI, "0"))
If objControl.Text  "" Then
zeile = zeile + 1
wks.Cells(zeile, 2) = objControl.Text
End If
Next
wks.Range("C11") = ComboBox1.Text 'Datum
wks.Range("F11") = ComboBox2.Text
wks.Range("G11").Value = "bis"
wks.Range("H11") = ComboBox4.Text
wks.Range("B14").Value = Me.TextBox1.Text
wks.Range("B20").Value = Me.TextBox2.Text
wks.Range("B16").Value = ComboBoxStr.Text & " " & Me.TextBox4.Text
wks.Range("F16") = ComboBox5.Text
wks.Range("B18").Value = ComboBoxOrt.Text
wks.Range("B46").Value = Me.TextBox11.Text

Habe den Code Dank dieses Forums und Recherche im Internet zusammenbekommen.
Nun zu meinem Problem:
Wie muss der Code verändert werden, wenn ich bevor die Einträge in das Blatt Abholung erfolgen, den ComboBox1 - Inhalt in Spalte C der am Anfang doppelgeklickten Zeile eintragen möchte?
Kann mir bitte Jemand helfen!
Vielen Dank!
mfg, Andreas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code erweitern!
09.12.2014 13:13:46
yummi
Hallo Andreas,
da ich annehme, dass man den Wert in combobox1 ändern kann, musst Du dir den ursprünglichen Wert merken. z.B. in eienr globalen Variable strMerke as string (außerhalb aller functions und Subs)
In Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) fügst Du am Anfang so etwas ein:
strMerke = Cells(Target.row,Target.column).value
Jetzt hast du dir den WErt gemerkt und kannst bei Button_Click drauf zurückgreifen.
In Private Sub CommandButton1_Click() musst du ihn wieder einfügen.
Nur ist mir nicht klar wo du ihn hinschreiben willst. Dahin wo du jetzt dein _Combobox1 Wert schreibst?
Dann anstatt wks.Range("C11") = ComboBox1.Text 'Datum dies wks.Range("C11") = strMerke
oder willst du ihn die Zeile schreiben auf die du den doppelklick ausgeführt hast, dann berauchst du noch eine 2. globale Varibale lMerkeZeile as long (genauso wie mit strMerke)
dann am Anfang von Button_Click wks.Cells(lMerkeZeile,3).value = strMerke
Gruß
yummi

Anzeige
AW: Code erweitern!
09.12.2014 13:37:03
Andreas
Hallo yummi,
danke für die schnelle Antwort. Da ich mir nicht sicher bin ob ich mich richtig ausgedrückt habe hier noch mal kurz eine Erklärung:
Bei Doppelklick in eine Zeile im Blatt "Besichtigungen" werden die Werte in das UserForm übernommen. ComboBox1 ist aber noch leer. In ComboBox1 wird dann ein Wert (Datum) ausgewählt und per Commandbutton werden alle Werte der UserForm in das Blatt "Abholung" geschrieben.
Das in der ComboBox1 gewählte Datum soll aber zuvor in die Spalte 3 (C) der zuvor doppelgeklickten Zeile eingetragen werden.
mfg, Andreas

Anzeige
AW: Code erweitern!
09.12.2014 13:44:10
yummi
Hallo Andreas,
jetzt ist klarer was du willst ;-)
Dann brauchst du eine Variable lMerkerow as long
Kannst Du in deiem Code außerhalb der Functions und Subs so definieren
Dim lMerkerow as long
in In Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) fügst Du am Anfang
lMerkerow = target.row ein
Und in Button1_Click kommt noch:
wks.Cells(lMerkeZeile,3).value = Me.Combobox1.text
Gruß
yummi

AW: Code erweitern!
09.12.2014 14:17:32
Andreas
Hallo yummi,
Habe es jetz so geändert:
Im Blatt "Besichtigungen"

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
Dim lMerkerow As Long
lMerkerow = Target.Row
zeile = Target.Row
AbholungBesicht.TextBox1 = Worksheets("Besichtigungen").Cells(zeile, 4).Value
AbholungBesicht.TextBox2 = Worksheets("Besichtigungen").Cells(zeile, 5).Value
AbholungBesicht.ComboBoxStr = Worksheets("Besichtigungen").Cells(zeile, 6).Value
AbholungBesicht.TextBox4 = Worksheets("Besichtigungen").Cells(zeile, 7).Value
AbholungBesicht.ComboBox5 = Worksheets("Besichtigungen").Cells(zeile, 8).Value
AbholungBesicht.ComboBoxOrt = Worksheets("Besichtigungen").Cells(zeile, 9).Value
AbholungBesicht.TextBox11 = Worksheets("Besichtigungen").Cells(zeile, 11).Value
AbholungBesicht.ComboBox21 = Worksheets("Besichtigungen").Cells(zeile, 12).Value
AbholungBesicht.ComboBox22 = Worksheets("Besichtigungen").Cells(zeile, 13).Value
AbholungBesicht.ComboBox23 = Worksheets("Besichtigungen").Cells(zeile, 14).Value
AbholungBesicht.ComboBox24 = Worksheets("Besichtigungen").Cells(zeile, 15).Value
AbholungBesicht.ComboBox25 = Worksheets("Besichtigungen").Cells(zeile, 16).Value
AbholungBesicht.ComboBox26 = Worksheets("Besichtigungen").Cells(zeile, 17).Value
AbholungBesicht.ComboBox27 = Worksheets("Besichtigungen").Cells(zeile, 18).Value
AbholungBesicht.ComboBox28 = Worksheets("Besichtigungen").Cells(zeile, 19).Value
AbholungBesicht.ComboBox29 = Worksheets("Besichtigungen").Cells(zeile, 20).Value
AbholungBesicht.ComboBox30 = Worksheets("Besichtigungen").Cells(zeile, 21).Value
AbholungBesicht.ComboBox31 = Worksheets("Besichtigungen").Cells(zeile, 22).Value
AbholungBesicht.ComboBox32 = Worksheets("Besichtigungen").Cells(zeile, 23).Value
AbholungBesicht.ComboBox33 = Worksheets("Besichtigungen").Cells(zeile, 24).Value
AbholungBesicht.ComboBox34 = Worksheets("Besichtigungen").Cells(zeile, 25).Value
AbholungBesicht.ComboBox35 = Worksheets("Besichtigungen").Cells(zeile, 26).Value
AbholungBesicht.ComboBox36 = Worksheets("Besichtigungen").Cells(zeile, 27).Value
AbholungBesicht.ComboBox37 = Worksheets("Besichtigungen").Cells(zeile, 28).Value
AbholungBesicht.ComboBox38 = Worksheets("Besichtigungen").Cells(zeile, 29).Value
AbholungBesicht.ComboBox39 = Worksheets("Besichtigungen").Cells(zeile, 30).Value
AbholungBesicht.ComboBox40 = Worksheets("Besichtigungen").Cells(zeile, 31).Value
AbholungBesicht.CheckBoxBesichtJa = True
AbholungBesicht.Show
End Sub
Im UserForm "AbholungBesicht"

Private Sub CommandButton1_Click()
wks.Cells(lMerkeZeile, 3).Value = Me.ComboBox1.Text
Dim zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
zeile = 21
Set wks = Sheets("Abholung")
wks.Range("B22:B43").ClearContents
For intI = 21 To 40
Set objControl = Me.Controls("Combobox" & Format(intI, "0"))
If objControl.Text  "" Then
zeile = zeile + 1
wks.Cells(zeile, 2) = objControl.Text
End If
Next
wks.Range("C11") = ComboBox1.Text 'Datum
wks.Range("F11") = ComboBox2.Text 'Zeit
wks.Range("G11").Value = "bis"   '"bis"
wks.Range("H11") = ComboBox4.Text 'Zeit
wks.Range("B14").Value = Me.TextBox1.Text 'Name
wks.Range("B20").Value = Me.TextBox2.Text 'Telefon
wks.Range("B16").Value = ComboBoxStr.Text & " " & Me.TextBox4.Text 'Strasse + Nummer
wks.Range("F16") = ComboBox5.Text 'Etage
wks.Range("B18").Value = ComboBoxOrt.Text 'Ort
wks.Range("B46").Value = Me.TextBox11.Text 'Bemerkungen

Hier kommt da eine Fehlermeldung (im Code Fett dargestellt):
Fehler beim Kompilieren:
Variable nicht definiert
mfg, Andreas

Anzeige
AW: Code erweitern!
09.12.2014 14:21:54
yummi
Hallo Andreas,
die Zeile
Dim lMerkerow As Long
muss außerhalb des subs sein
Am besten in einem Modul
Gruß
yummi

AW: Code erweitern!
09.12.2014 14:29:22
Werner
Hallo Andreas,
zudem definierst du die Variable
lMerkerow
beim Eintragen der Daten verwendest du dann aber eine Variable
lMerkeZeile
und die ist zumindest im online gestellten Code nirgends definiert.
Gruß Werner

AW: Code erweitern!
09.12.2014 14:54:59
Andreas
Hallo yummi,
ich seh erlich gesagt nicht mehr durch.
Ich hab mal ne abgespeckte Datei hochgeladen. Zum Testen auf die gefüllte Zeile doppelklicken, dann im UserForm das Datum auswählen und den grauen Commandbutton drücken. da sollte dann das Datum aus der ComboBox in die Spalte 3 der angeklickten Zeile stehen.
https://www.herber.de/bbs/user/94309.xlsm
Vielen Dank für die Muhe und Hilfe!
mfg, Andreas

Anzeige
AW: Code erweitern!
09.12.2014 15:15:06
yummi
Hallo Andreas,
sry hab dir nicht alles verraten ;-)
Dein Modul muss so aussehen
Public lMerkerow As Long
ist aber noch ein Fehler drin:

Private Sub CommandButton1_Click()
wks.Cells(lMerkerow, 3).Value = Me.ComboBox1.Text
Dim zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
muss so:

Private Sub CommandButton1_Click()
Dim zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
zeile = 21
Set wks = Sheets("Abholung")
wks.Cells(lMerkerow, 3).Value = Me.ComboBox1.Text
wks.Range("B22:B43").ClearContents
da du sonst doppelt wks definierst. Desweiteren solltest du noch sicherstellen, dass das Sheet was du ein paar Zeilen weiter unten aktivierst (warum auch immer) auch vorhanden ist.
Gruß
yummi

Anzeige
AW: Code erweitern!
09.12.2014 15:44:23
Andreas
Hallo yummi,
habe es jetzt so abgeändert, es passiert aber nichts.
Ich habe zwar nicht soviel Erfahrung mit VBA, aber bezieht sich wks nicht auf das Blatt "Abholung"?
Der Wert aus der ComboBox1 soll aber zuerst in das Blatt "Besichtigungen" (doppelgeklickte Zeile) und dann erst in das Blatt "Abholung" geschrieben werden (mit allen anderen Werten aus dem UserForm).
Zu deinem letzten Hinweis: in das Blatt welches zum Schluss aktiviert wird, werden die Werte aus dem UserForm nochmals eingetragen. Ein eventuelles fehlen des Blattes wird auch abgefangen.
https://www.herber.de/bbs/user/94312.xlsm
mfg, Andreas

Anzeige
AW: Noch ein Hinweis!
09.12.2014 15:51:03
Andreas
Das Blatt "Abholung" ist versteckt, da es nach der Übergabe der Daten aus dem UserForm nur ausgedruckt wird. Es muss also nicht sichtbar sein.
mfg, Andreas

AW: Code erweitern!
09.12.2014 15:58:39
yummi
Hallo Andreas,
ok jetzt hab ich hoffentlcih verstanden was du willst ;-)
änder mal so:

Private Sub CommandButton1_Click()
Dim zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
zeile = 21
Set wks = Sheets("Abholung")
ActiveSheet.Cells(lMerkerow, 3).Value = Me.ComboBox1.Text
wks.Range("B22:B43").ClearContents
Du hast recht wks ist Abholung, aber activesheet ist Besichtigung, dann geht es
Gruß
yummi

Anzeige
AW: Code erweitern!
09.12.2014 16:11:06
Andreas
Hallo yummi,
Vielen, vielen Dank für deine Geduld und Mühe. Jetzt klappt es.
Einen schönen Tag noch.
mfg, Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige