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

Combobox Initialize und Change in ein Sub

Combobox Initialize und Change in ein Sub
24.09.2004 09:17:38
Wolfi
Guten Morgen,
Eine kleine Frage:
wie kann ich den Folgenden Code in ein einzigen Sub packen, indem zusätzlich noch weiterer Code ausgeführt wird?
Dim pos(2)
Dim n As Integer

Private Sub UserForm_Initialize()
Dim test%, Test1%, test2%
test = 1
Test1 = 2
test2 = 3
UserForm1.ComboBox1.List = Array(test, Test1, test2)
End Sub


Private Sub ComboBox1_Change()
n = 2
pos(n) = 2
Worksheets("Process").Cells(pos(n), 3) = UserForm1.ComboBox1.Text
End Sub

Gruß und Danke Wolfi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox Initialize und Change in ein Sub
PeterW
Hallo Wolfi,
da es sich um zwei unterschiedliche Ereignisse handelt kannst du sie nicht in eine Sub packen.
Gruß
Peter
AW: Combobox Initialize und Change in ein Sub
Wolfi
Hi Peter,
Danke für die schnelle Antwort,
gibt es ne Andere Möglichkeit in einem Sub das Kombinationsfeld zu füllen und dann nach Auswahl eines Wertes des Kombinationsfeld diesen Wert im code Weiter zu verwenden.
Ich schaff es das kombinationsfeld zu befüllen eben mit UserForm1.ComboBox1.List = Array(test, Test1, test2) die drei test's sind wiederum Variable vom vorherigen Code.
Aber ich schaff es nicht nach Auswahl eines der Werte im Kombinationsfeld, diesen Ausgewählten Wert wieder an den Code zu übergeben
Gruß Wolfi
Anzeige
AW: Combobox Initialize und Change in ein Sub
PeterW
Hallo Wolfi,
an welchen Code willst du den Wert der ComboBox übergeben? Ein (unschöner) Weg wäre beispielsweise, mit dem ComboBox_Change deren Wert in eine Public Variable zu schreiben. Ohne die genaue Aufgabenstellung zu kennen fällt mir im Moment nichts besseres ein.
Gruß
Peter
AW: Combobox Initialize und Change in ein Sub
Wolfi
Hi Peter,
Ich möchte mit dem Code immer den häufigsten Arbeitsplatz ermittel.
Das geht auch.
Allerdings gibt es den Fall, das in einem Abschnitt drei unterschiedliche Arbeitsplätze vorhanden sind, also ist keine Häufigkeitsermittling möglich.
Dann geht der Code Zu Fehler. Und es werden jetzt die drei Plätze an die Combobox übergeben. Dann wähl ich einen aus. Dieser soll wieder an den Code übergeben werden und in die entsprechende Zelle eingetragen werden und das klappt nicht.
also etwa so:
UserForm1.ComboBox1.List = Array(test, test1, test2)
UserForm1.Show
Worksheets("Process").Cells(pos(n), 3) = Wert der Combobox
Hier der ganze Code und ein Beispiel: https://www.herber.de/bbs/user/11201.xls

Sub Workcenter()
Dim pos()
Dim wks As Workbook
Dim wk
Set wks = ActiveWorkbook
anz = 0
ges = Worksheets("Process").Range("a65536").End(xlUp).Row
With Worksheets(1).Range("a1:a" & ges)
Set c = .Find("Summe", LookIn:=xlValues)
If Not c Is Nothing Then
Do
anz = anz + 1
ReDim Preserve pos(anz)
pos(anz) = c.Row
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Row <> pos(1)
End If
ReDim Preserve pos(anz + 1)
pos(anz + 1) = ges + 2
End With
For n = 1 To anz
On Error GoTo Fehler
Worksheets("Process").Cells(pos(n), 2) = _
WorksheetFunction.Sum(Range(Cells(pos(n) + 1, 2), Cells(pos(n + 1) - 2, 2)))
If pos(n + 1) - pos(n) > 3 Then
Worksheets("Process").Cells(pos(n), 3) = _
WorksheetFunction.Mode(Range(Cells(pos(n) + 1, 3), Cells(pos(n + 1), 3)))
Else
Worksheets("Process").Cells(pos(n), 3) = Worksheets("Process").Cells(pos(n) + 1, 3)
Fehler:
If pos(n + 1) - pos(n) = 3 Then
Worksheets("Process").Cells(pos(n), 3) = Worksheets("Process").Cells(pos(n) + 1, 3)
Else
test = Worksheets("Process").Cells(pos(n) + 1, 3)
test1 = Worksheets("Process").Cells(pos(n) + 2, 3)
test2 = Worksheets("Process").Cells(pos(n) + 3, 3)
UserForm1.ComboBox1.List = Array(test, test1, test2)
UserForm1.Show
Worksheets("Process").Cells(pos(n), 3) = UserForm1.ComboBox1.Value
End If
End If
Next n
End Sub

Anzeige
AW: Combobox Initialize und Change in ein Sub
PeterW
Hallo Wolfi,
habe mir jetzt mal die Datei und den Code angesehen. Das Einlsesen der Werte in die ComboBox ist kein Problem, auch nicht die Rückgabe des ausgewählten Wertes. Problematisch ist das bewußte Auslösen einer Fehlerroutine und aus dieser wieder in den Code aufzunehmen. Ich würde das wohl so angehen und folgende Fälle unterscheiden
If pos(n + 1) - pos(n) = 1 then
dieser Fall ist klar!
Deine Bedingung
If pos(n + 1) - pos(n) = 3 Then
irrt für den Fall, das ein Arbeitsplatz doppelt erscheint!
In allen anderen Fällen müssen die verschiedenen Werte und deren Anzahl ermittelt (auch da hilft die Recherche weiter) und die Combobox ggf mit den mehrfachen Modalwerten gefüttert werden. Die Auswahl würde ich auf dem UserForm bestätigen lassen, wie schnell hat man sich verklickt. ;-) Und in das Klick Ereignis des Buttons würde würde ich den Wert einer public Variablen übergeben, wo sie für den weiteren Code zur Verfügung steht.
Ich hoffe dieser Denkansatz reicht dir aus. Für eine Komplettlösung, die im Prinzip nur ein Jonglieren mit Datenfeldern darstellt fehlt mir im Moment die Zeit.
Gruß
Peter
Anzeige
AW: Combobox Initialize und Change in ein Sub
26.09.2004 21:40:25
Wolfi
Hi Peter,
Du hast natürlich recht, das es noch weitere Probleme im Code gibt.
Ich wollte halt erst das eine Problem angehen, also das mit der Combobox, und dann weiter machen.
Diese hab ich nun gelöst, halt mit einer Public Variablen.
Werd mich morgen an die weiteren Problme machen, und Deine Vorschläge versuchen umzusetzten. Mals sehen wie weit ich komm..... bin halt noch kein VBA Profi.
Vielen Dank für die gute Hilfe.
Gruß Wolfi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige