Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
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
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ComboBox / ListBox

ComboBox / ListBox
19.12.2003 20:17:04
Ina
Hallo Forum,

ich möchte etwas in VBA realisieren, habe aber leider noch recht wenig Erfahrung von VBA.

Vielleicht könnt ihr mir weiterhelfen...

Am Besten schildere ich mein Vorhaben:

In Tabelle 1, Zellen H9:H39 müssen Werte eingegeben werden.

Um die Eingabe zu vereinfachen, möchte ich, das, nachdem ich die gewünschte Zelle mit der rechten Maustaste
angeklickt habe, eine UserForm mit einer ComboBox oder ListBox aufgeht.

In der ListBox sollen Werte aus Tabelle2, Zellen B8:F107 eingelesen werden.

Sobald ich einen Wert in der Listbox anklicke, soll dieser Wert in die aktive Zelle in Tabelle1 eingetragen werden.

Ich hoffe, das ich mein Vorhaben einigermassen verständlich vorgetragen habe?!

Für eure Hilfe, möglichst in Form eines Code-Beispiels sage ich vorab vielmals DANKE!

Gruss Ina

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox / ListBox
19.12.2003 20:36:42
PeterW
Hallo Ina,

sollen *alle* Werte eingelesen werden? Bei 500 Werten dürfte die Auswahl nicht unbedingt eine Vereinfachung der Eingabe sein!

Gruß
Peter
AW: ComboBox / ListBox
19.12.2003 20:48:24
Ina
Hallo Peter,

danke für Deine Nachricht.

Eingelesen werden sollen die Werte B8:B107, C8:D107, F8:F807 (wobei die Werte C8:D107,F8:F807 als Beschreibung/Orientierung bezüglichich B8:B107 dienen sollen).

Vielleicht kannst Du weitrhelfen?

Danke und Gruss Ina
AW: ComboBox / ListBox
19.12.2003 21:12:56
PeterW
Hallo Ina,

du hast ein Userform angelegt mit dem Namen Userform1 auf der sich ein Listfeld ListBox1 befindet.
In das Modul "Tabelle1" gehört folgender Code:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("H9:H39")) Is Nothing Then
UserForm1.Show
End If
Cancel = True
End Sub

In das Modul des Userform gehört der Code:

Private Sub ListBox1_Click()
Sheets("Tabelle1").Range(ActiveCell.Address) = ListBox1.Value
Unload Me
End Sub


Private Sub UserForm_Initialize()
ListBox1.RowSource = "Tabelle2!B7:F108"
End Sub


Gruß
Peter
Anzeige
AW: ComboBox / ListBox
19.12.2003 21:23:10
Ina
Hallo Peter,

das klappt (fast) perfekt.

In meiner Listbox1 erscheint nur der Wert aus dem Zellenbereich Tabelle2!B7:B108, nicht jedoch aus den anderen Bereichen :-(

Habe ich etwas falsch gemacht?

Gruss Ina
AW: ComboBox / ListBox
19.12.2003 21:35:03
PeterW
Hallo Ina,

dann probier das mal so:

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 5
ListBox1.RowSource = "Tabelle2!B7:F108"
End Sub

Gruß
Peter
AW: Klappt prima! Danke Peter (OT)
19.12.2003 21:49:48
Ina
AW: Doch noch ein Problem...
19.12.2003 23:04:07
Ina
Hallo Peter, hallo Forum,

hatte leider vergessen, das in Tabelle1 im Zellbereich B9:B39 möglicherweise der Hinweis (PW) stehen könnte.

In diesem Fall müssen aus Tabelle3, Zellen B8:F107 in der ListBox Werte eingelesen werden.

Wie kann das realisiert werden???

Gruss Ina
Anzeige
AW: Doch noch ein Problem...
19.12.2003 23:21:00
PeterW
Hallo Ina,

nicht elegant aber ein möglicher Weg: lege ein zweites Userform an, aufgebaut wie das erste. Der Code für Userform2:

Private Sub ListBox1_Click()
Sheets("Tabelle1").Range(ActiveCell.Address) = ListBox1.Value
Unload Me
End Sub


Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 5
ListBox1.RowSource = "Tabelle3!B7:F108"
End Sub

Der Code für das Aufrufen des passenden Userforms müsste geändert werden in:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("H9:H39")) Is Nothing Then
If Target = "PW" Then
UserForm2.Show
Else
UserForm1.Show
End If
End If
Cancel = True
End Sub

Gruß
Peter
Anzeige
AW: Doch noch ein Problem...
19.12.2003 23:40:37
Ina
Hallo Peter,

das klappt irgendwie noch nicht...

Selbst wenn in Tabelle1 im Zellbereich B9:B39 der Hinweis (PW) steht, erscheint noch die UserForm1 Eingaben in Tabelle1 erfolgt in den Bereich H9:H39.

Wird vielleicht der Bereich Tabelle1 B9:B39 nicht vorher auf PW geprüft?

Kannst Du noch einmal weiterhelfen??

Danke und Gruss Ina
AW: Doch noch ein Problem...
19.12.2003 23:58:53
PeterW
Hallo Ina,

ist schon spät, sorry für das oberflächliche Lesen. So sollte es jetzt aber funktionieren:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim rng As Range
If Not Intersect(Target, Range("H9:H39")) Is Nothing Then
Set rng = ActiveSheet.Range("B7:B107").Find(what:="PW")
If Not rng Is Nothing Then
UserForm2.Show
Else
UserForm1.Show
End If
End If
Cancel = True
End Sub

Gruß
Peter
Anzeige
AW: Leider noch nicht...
20.12.2003 00:29:27
Ina
Hallo Peter,

leider klappt das noch nicht, es erscheint immer nur die UserForm1 :-(

Aber... Du hast recht, es ist schon sehr spät.

Vielleicht findest Du ja noch eine Lösung, muss ja nicht mehr jetzt sein.

Ich sehe morgen im Laufe des Tages noch einmal im Forum vorbei.

Du hast mir bis jetzt schon sehr geholfen, dafür Danke und Gute Nacht!

Gruss Ina
AW: Leider noch nicht...
20.12.2003 09:04:59
PeterW
Hallo Ina,

war wirklich schon spät, richtig hätte es heißen müssen:
Set rng = ActiveSheet.Range("B9:B39").Find(what:="PW")
Möglichweise hab ich es auch falsch verstanden. Soll sich das PW nur auf die Zeile beziehen, in der du den Rechtsklick machst? Dann müsste es so gehen:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Cells(Target.Row, 2) = "PW" Then
UserForm2.Show
Else
UserForm1.Show
End If
Cancel = True
End Sub

Gruß
Peter
Anzeige
AW: Klappt! Habe aber noch ein Prob...
20.12.2003 09:48:42
Ina
Guten Morgen Peter,

ich hoffe, Du hast ausgeschlafen?! :-)

Toll, das klappt ganz ausgezeichnet! :-))
Vielen, vielen Dank!!

Darf ich jetzt noch einmal nerven??

Ich möchte jetzt in die gleiche Tabelle (Tabelle1) in die Zellen I9:I39 ebenfalls (wenn möglich) per rechtsklick eine UserForm mit ListBox öffnen und Werte aus Tabelle1 Zellbereich AF48:AM95 auslesen und wieder mit Klick auf einen der Werte in die aktive Zelle (H9:H39) übernehmen.

Ich habe schon mal etwas experimentiert, aber meine VBA-Kenntnisse sind doch noch sehr bescheiden (und das ist schon vorsichtig ausgedrückt)...


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("G9:G39")) Is Nothing Then
If Cells(Target.Row, 2) = "PW" Then
UserForm2.Show
Else
UserForm1.Show
End If
End If
Cancel = True
End Sub


Noch eine Frage:
Ist es möglich, nicht nur den angeklickten Wert aus der ListBox zu übernehmen, sondern alle rechts davon angezeigten Werte (jeweils in eine weitere Spalte rechts neben der aktiven Zelle).

Beispiel:
Aktive Zelle G5 (Wert wird in diese Zelle eingetragen), der nächste rechts davon in der ListBox angezeigte Wert in H5, der nächste rechts davon in der ListBox angezeigte Wert in I5 usw....

Gruss Ina
Anzeige
AW: Klappt! Habe aber noch ein Prob (Ups)...
20.12.2003 09:56:48
Ina
Hallo Peter,

da hatte sich einen kleiner Fehler eingeschlichen!

... und wieder mit Klick auf einen der Werte in die aktive Zelle (H9:H39) übernehmen.

Muss natürlich heissen:

... und wieder mit Klick auf einen der Werte in die aktive Zelle (I9:I39 ) übernehmen.

Sorry.

Gruss Ina
AW: Klappt! Habe aber noch ein Prob...
20.12.2003 10:02:51
PeterW
Hallo Ina,

weitere Bereich auf dem selben Weg zu bearbeiten ist kein Problem:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("H9:H39")) Is Nothing Then
If Cells(Target.Row, 2) = "PW" Then
UserForm2.Show
Else
UserForm1.Show
End If
End If
If Not Intersect(Target, Range("I9:I39")) Is Nothing Then
UserForm3.Show
End If
Cancel = True
End Sub

Sollte auch hier eine Abhängigkeit von PW bestehen erweitere den zweiten Teil des Codes mit einer weiteren If-Abfrage wie im ersten.Das UserForm3 musst du natürlich noch anlegen analog zu den beiden anderen.
Die weiteren Werte bekommst du beispielsweise in der Tabelle mit Sverweis (siehe Excel-Hilfe).

Gruß
Peter
Anzeige
AW: Klappt! Eine letzte Frage...
20.12.2003 10:45:50
Ina
Hallo Peter,

ich bin begeistert, das klappt wunderbar!

Meine (fast) letzte Frage...

Ich möchte Werte per UserForm über TextBoxen (1-6) in eine Tabelle (Tabelle3, in den Bereich B8:G107) eingeben.

Anschliessend sollen die Werte per CommandButton1 übernommen und die Textboxen gelöscht werden, um weitere Werte eingeben zu können (dazu müsste dann natürlich die nächste Zeile angesprochen werden).

Beispiel:
- Werteingabe in UserForm1, TextBoxen 1-6.
- Klick auf CommandButton1 (dadurch Übernahme der Werte in B8:G8, löschen der TextBoxen)
- Weitere Eingabe
- Klick auf CommandButton1 (dadurch Übernahme der Werte in B9:G9, löschen der TextBoxen)
- Werteingabe in UserForm1, TextBoxen 1-6.
- Klick auf CommandButton1 (dadurch Übernahme der Werte in B10:G10, löschen der TextBoxen)
usw.
Wenn Zeile 108 erreicht wird, dürfen keine Werte mehr eingegeben werden können (vielleicht Hinweis per MessageBox?).

Kannst Du mir dabei noch einmal helfen??

Und jetzt meine allerletzte Frage:
Wie bzw. mit welchen Hilfsmitteln kann ich am Besten VBA erlernen?

Ich hoffe, ich nerve nicht zu sehr!

Gruss Ina
Anzeige
AW: Klappt! Eine letzte Frage...
20.12.2003 10:53:29
PeterW
Hallo Ina,

die Eingabe mit Textboxen in einer Userform ist kein Problem. Fragen dazu: werden immer alle Textboxen ausgefüllt und wenn nicht, gibt es zumindest eine Textbox, die in jedem Fall einen Wert enthält? Werden in die Textboxen Texte oder Zahlen eingegeben, soll mit möglichen Zahlen in der Tabelle weiter gerechnet werden können und wenn ja, was sind das für Zahlen, Ganzzahlen, Dezimalzahlen, Preise, Daten... ?

Gruß
Peter
AW: Klappt! Eine letzte Frage...
20.12.2003 11:21:54
Ina
Hallo Peter,

vielen Dank für Deine Geduld!

1.
Es werden nicht immer alle Textboxen ausgefüllt.

2.
Grundsätzlich werden immer 3 Boxen ausgefüllt.

2.1
Box1 enthällt Zahlen (4-stellig, Ganzzahl, wird nicht für Berechnungen herangezogen)

2.2
Box 2, 3, 4 enthalten Zeitwerte (werden für Berechnungen benötigt, Eingabe möglichst ohne " : ", " , ", " . " etc., Umwandlung in HH:MM, wenn möglich, nach Verlassen des Feldes oder bei Eingabe, Klick auf CommandButton etc.).

3.
Box 5 und 6 enthalten Texte (Beschreibungen)

Gruss Ina
Anzeige
AW: Klappt! Eine letzte Frage...
20.12.2003 11:29:35
Ina
Hallo Hans,

Danke für Dein Interesse an meinem Problem.

Grundsätzlich eignet sich die Beispiel-Arbeitsmappe für mein Vorhaben.

Einzigstes Manko:
Bei der Mappe werden nur Werte übertragen, wenn alle Felder ausgefüllt wurden.
Bei meinem Vorhaben werden nicht immer alle Felder ausgefüllt, es findet in diesem Fall leider keine Übernahme in die Tabelle statt.

Gruss Ina
AW: Klappt! Eine letzte Frage...
20.12.2003 11:45:08
Hans W. Herber
Hallo Ina,

ich habe die Routine entsprechend erweitert, bitte noch einmal downloaden:
https://www.herber.de/bbs/texte/0062.xls

gruss hans
AW: Danke Peter...
20.12.2003 13:29:03
Ina
Hallo Peter,

noch einmal herzlichen Dank für Deine Mühe und Geduld!

Ich wünsche Dir ein schönes Wochenende!

Noch einmal meine letzte Frage von vorhin:
Wie bzw. mit welchen Hilfsmitteln kann ich am Besten VBA erlernen?

Gruss Ina
AW: Danke Peter...
20.12.2003 14:15:04
Ina
Hallo Peter,

herzlichen Dank, die Links funktionieren noch!

Auch Dir einen schönen 4. Advent!

Gruss Ina
AW: Klappt! Eine letzte Frage...
20.12.2003 11:10:37
Hans W. Herber
Hallo Ina, Peter,

entschuldigt bitte, dass ich mich einmische, aber das Thema eignete sich so schön zur Erstellung einer Beispielarbeitsmappe, zu finden unter:
https://www.herber.de/bbs/texte/0062.xls

An Ina: Wenn Du mit der Beispielarbeitsmappe etwas anfangen kannst, eignen sich für Dein VBA-Vorhaben meine Excel/VBA-Beispiele, sonst nicht.

gruss hans
@Hans
20.12.2003 12:00:13
PeterW
Hallo Hans,

wenn sich hier einer bestimmt nicht dafür entschuldigen muss, sich einzumischen, dann bist du das. :-)

Werde mir die Mappe später ansehen und bin sicher, selber das ein oder andere Schmankel darin zu finden.

Gruß
Peter
AW: @Hans
20.12.2003 12:21:21
Ina
Hallo Hans,

Sorry, hat ein wenig gedauert...

Mit der geänderten Mappe klappt das Eingeben bestens.

Bleibt nur noch die Formatierung (während, nach der Eingabe Zeitformat etc.).

Bin leider VBA-Neuling (aber lernfähig!).

Ich möchte mich Peter bezüglich der "Einmischung" anschliessen und danke für Dein Interesse!

Gruss Ina
AW: @Hans
20.12.2003 13:00:17
Hans W. Herber
Hallo Ina,

ich habe die Routine entsprechend erweitert, Details in der Arbeitsmappe.

gruss hans
AW: @Hans
20.12.2003 13:26:19
Ina
Hallo Hans,

vielen, vielen Dank.

So klappt es!

Ich wünsche Dir ein schönes Wochenende!

Gruss Ina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige