Anzeige
Archiv - Navigation
1164to1168
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

ComboBox auswahl als Variable verwenden

ComboBox auswahl als Variable verwenden
daniela.schmidt@atlantisfoundries.com
Hallo Zusammen
Ich habe eine Userform mit einer ComboBox zum Auswaehlen erstellt.
In der ComboBox kann man auswaehlen zwischen: Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
Weiterhin gibt es zwei CommandButton: Ok und Abbruch.
Meine Userform bis jetzt sieht so aus:
Private Sub UserForm_Activate()
Dim lngM As Long
With cmbMonat
For lngM = 2 To 12
.AddItem Format(DateSerial(2010, lngM, 1), "MMM")
Next
End With
End Sub

Private Sub cmdAbbruch_Click()
Unload Me
End Sub

Private Sub cmdOK_Click()
End Sub

Ich wuerde jetzt gerne bei Klick auf Ok, dass folgende Formel in F11 ausgefuehrt wird und 100 Zeilen nach unten Kopiert wird.
Die Formel soll sich aber je nach Auswahl in der ComboBox an den jeweils ausgewaehlten Monat anpassen.
Die Tabellenregister meiner Arbeitsmappe heissen Master Data Feb, Master Data Mar, usw.
Die Formel folgendermassen:
'=IF(AND(IF(C11="","",SUMPRODUCT(('Master Data Jun'!$E$5:$E$10883=C11)*('Master Data Jun'!$B$5:$B$10883=$F$3)*(1)))=0,IF(C11="","",SUMPRODUCT(('Master Data Jul'!$E$5:$E$10883=C11)*('Master Data Jul'!$B$5:$B$10883=$F$3)*(1)))=1,C11""),VLOOKUP(C11,'Master Data Jul'!$E$5:$W$10883,18,FALSE),"")
Wie kann ich jetzt die Auswahl der ComboBox als Variable in meine Formel eingeben, damit sich die Formel an den Monat anpasst, der ausgewaehlt wurde.
Juli ist in der Formel der ausgewaehlte Monat in der ComboBox und Juni ist dann der Vormonat.
Hat jemand eine Idee?
Daniela
AW: ComboBox auswahl als Variable verwenden
14.07.2010 11:06:52
Nepumuk
Hallo,
und was soll der Vormonat sei wenn ich Feb auswähle?
Gruß
Nepumuk
AW: ComboBox auswahl als Variable verwenden
14.07.2010 11:10:44
daniela.schmidt@atlantisfoundries.com
Ups,
dann muss es heissen
Private Sub UserForm_Activate()
Dim lngM As Long
With cmbMonat
For lngM = 1 To 12
.AddItem Format(DateSerial(2010, lngM, 1), "MMM")
Next
End With
End Sub
Aber ich wollte hier dass man nicht den Januar auswaehlen kann, weil ich keine Daten von December habe!!
Daniela
AW: ComboBox auswahl als Variable verwenden
14.07.2010 11:33:24
Nepumuk
Hallo,
hier mal ein Beispiel:
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit
Option Base 0

Private lstrMonth(11)

Private Sub CommandButton1_Click()
    
    If ComboBox1.ListIndex = -1 Then
        
        MsgBox "No Month select", vbExclamation, "Exclamation"
        
    ElseIf ComboBox1.ListIndex = 0 Then
        
        'Hier kommt die Formel für den Januar rein. Die ist etwas anders, da es kein Vormonat gibt.
        
    Else
        
        'Hier die Tabelle und den Bereich für die Formel anpassen !!!
        
        Tabelle1.Range("A1:A100").Formula = "=IF(AND(IF(C11="""","""",SUMPRODUCT(('Master Data " & _
            lstrMonth(ComboBox1.ListIndex - 1) & "'!$E$5:$E$10883=C11)*('Master Data " & _
            lstrMonth(ComboBox1.ListIndex - 1) & "'!$B$5:$B$10883=$F$3)*(1)))=0,IF(" & _
            "C11="""","""",SUMPRODUCT(('Master Data " & lstrMonth(ComboBox1.ListIndex) & _
            "'!$E$5:$E$10883=C11)*('Master Data " & lstrMonth(ComboBox1.ListIndex) & _
            "'!$B$5:$B$10883=$F$3)*(1)))=1,C11<>""""),VLOOKUP(C11,'Master Data " & _
            lstrMonth(ComboBox1.ListIndex) & "'!$E$5:$W$10883,18,FALSE),"""")"
        
    End If
    
End Sub

Private Sub UserForm_Activate()
    Dim lngMonth As Long
    For lngMonth = 0 To 11
        lstrMonth(lngMonth) = MonthName(lngMonth + 1, True)
    Next
    ComboBox1.List = lstrMonth
End Sub

Gruß
Nepumuk
Anzeige
Wie oft willst Du diese Fragen denn noch stellen ?
14.07.2010 11:23:34
NoNet
:-(
Gruß, NoNet
!!
14.07.2010 11:28:37
daniela.schmidt@atlantisfoundries.com
Man koennte mir ja mal eine Antwort geben...
Ich moecht doch nur wissen wie ich die Auswahl aus der ComboBox verwenden kann?
Daniela
AW: ComboBox auswahl als Variable verwenden
14.07.2010 11:28:50
Rudi
Hallo,
mal als Bsp.:
Private Sub UserForm_Activate()
Dim lngM As Long
With cmbMonat
For lngM = 1 To 12
.AddItem Format(DateSerial(2010, lngM, 1), "MMM")
Next
End With
End Sub

Private Sub cmdAbbruch_Click()
Unload Me
End Sub

Private Sub cmdOK_Click()
Dim sMonat As String, sVMonat As String, sFormel As String
If cmbMonat.ListIndex > 0 Then
sMonat = cmbMonat
sVMonat = cmbMonat.List(cmbMonat.ListIndex - 1)
sFormel = "=IF(AND(IF(C11="","",SUMPRODUCT(('Master Data " _
& sVMonat & "'!$E$5:$E$10883=C11)*('Master Data " _
& sVMonat & "'!$B$5:$B$10883=$F$3)*(1)))=0,IF(C11="","",SUMPRODUCT(('Master Data " _
& sMonat & "'!$E$5:$E$10883=C11)*('Master Data " _
& sMonat & "'!$B$5:$B$10883=$F$3)*(1)))=1,C11""),VLOOKUP(C11,'Master Data " _
& sMonat & "'!$E$5:$W$10883,18,FALSE),"") "
End If
End Sub

Gruß
Rudi
Anzeige
ein letzter versuch von mir.
14.07.2010 11:35:59
mir.
Hallo,
vielleicht geht es so.
Habe aber Deine Tabellen nicht nachgebaut,
daher kann ich nicht versprechen ob die Formel funktioniert.
Private Sub cmdOK_Change()
Dim sErster_Monat$, sZweiter_Monat$, sFormel$
If cmdOK.ListIndex > -1 And cmdOK.ListIndex < 10 Then 'wurde etwas ausgewählt? 
    
    'Monat in einem String merken oder 
    'direkt entsprechend in die Formel einbauen 
    sErster_Monat$ = cmdOK.Value 'erster Monat 
    sZweiter_Monat$ = cmdOK.List(cmdOK.ListIndex + 1) 'zweiter Monat 
    
    'Formel zusammenbauen 
    'alle "" verdoppeln also """" 
    sFormel = "=IF(AND(IF(C11="""","""",SUMPRODUCT(('Master Data " & sErster_Monat$ & "'!$E$5:$E$10883=C11)" & _
            "*('Master Data " & sErster_Monat$ & "'!$B$5:$B$10883=$F$3)*(1)))=0,IF(C11="""",""""," & _
            "SUMPRODUCT(('Master Data " & sZweiter_Monat$ & "'!$E$5:$E$10883=C11)*" & _
            "('Master Data " & sZweiter_Monat$ & "'!$B$5:$B$10883=$F$3)*(1)))=1,C11<>"""")," & _
            "VLOOKUP(C11,'Master Data " & sZweiter_Monat$ & "'!$E$5:$W$10883,18,FALSE),"""")"
    'Formel in Zelle eintragen 
    'ab F11, 100 Zellen nach unten 
    Range("F11").Resize(100).Formula = sFormel
End If
End Sub

Gruß Tino
Anzeige
AW: ComboBox auswahl als Variable verwenden
14.07.2010 11:43:55
JogyB
Hi.
Probier mal das aus:
Private Sub cmdOK_Click()
Dim moNat As String
Dim vorMonat As String
With Me.cmbMonat
If .ListIndex = -1 Then
Exit Sub
ElseIf .ListIndex = 0 Then
vorMonat = "Jan"
Else
vorMonat = .List(.ListIndex - 1)
End If
moNat = .Value
End With
' Hier noch das korrekte Sheet angeben, in das die Daten sollen
With ThisWorkbook.Sheets("Main")
Range(.Cells(11, 6), .Cells(110, 6)).Formula = _
"=IF(AND(IF(RC[-3]="""","""",SUMPRODUCT(('Master Data " & vorMonat & _
"'!R5C5:R10883C5=RC[-3])*('Master Data " & vorMonat & _
"'!R5C2:R10883C2=R3C6)*(1)))=0,IF(RC[-3]="""","""",SUMPRODUCT(('Master Data " & _
moNat & "'!R5C5:R10883C5=RC[-3])*('Master Data " & moNat & _
"'!R5C2:R10883C2=R3C6)*(1)))=1,RC[-3]""""),VLOOKUP(RC[-3],'Master Data " & _
moNat & "'!R5C5:R10883C23,18,FALSE),"""")"
End With
Unload Me
End Sub

Gruß, Jogy
Anzeige
AW: ComboBox auswahl als Variable verwenden
14.07.2010 11:53:48
daniela.schmidt@atlantisfoundries.com
Die Variante von Jogy hat funktioniert, bei den anderen hat sich nichts getan wenn ich auf den OK Button geklickt habe.
Viel vielen Dank.
Daniela
dann hast Du nichts verstanden! ;-) oT.
14.07.2010 12:01:02
Tino
Bei "VBA nein" auch nicht so verwunderlich owT
14.07.2010 12:09:41
JogyB
VBA nein und Userform passt nicht ;-) oT.
14.07.2010 12:33:47
Tino
:-(
14.07.2010 12:57:55
daniela.schmidt@atlantisfoundries.com
Sag mal wie seit ihr denn alle drauf...
Ihr habt euch VBA bestimmt auch nicht alleine ohne Hilfe beigebracht oder?
mit geht und geht nicht gehts auch nicht ;-)
14.07.2010 13:09:30
Tino
Hallo,
man sollte sich schon mal damit auseinandersetzen und versuchen zu verstehen warum es nicht geht.
Ich nehme an Du hast den Code von Jogy übernommen und damit ist die Sache für dich erledigt.
Glaube mir, so wird es nie funktionieren.
Das hat nichts mit "gut oder schlecht drauf" zu tun.
Gruß Tino
Anzeige
AW: mit geht und geht nicht gehts auch nicht ;-)
14.07.2010 13:36:29
JogyB
Da muss ich den anderen Recht geben. Mein Code funktioniert und das freut mich. Nur wenn jetzt eine kleine Änderung an der Formel kommt, dann wirst Du vermutlich nicht in der Lage sein, die selber durchzuführen.
Programmieren in VBA ist ein ständiger Lernprozess. Wenn ich mir Code anschaue, den ich vor 3-4 Jahren geschrieben habe, dann stellen sich mir die Zehennägel auf - und schon damals war ich der Meinung, dass ich ganz gut programmieren kann (was im Vergleich zur breiten Masse sicher auch richtig war).
Und übrigens: Ja, ich habe mir das selbst beigebracht. Ich hatte zwar auch ein Buch, aber das habe ich nie richtig gelesen. Am Anfang sind der Makrorekorder, die VBA-Hilfe (die wirklich brauchbar ist) und Google Deine besten Freunde. Und wenn es mal komplexer wird, dann sind solche Foren wie hier sehr nützlich... und man lernt hier nicht nur beim Fragen, sondern auch beim Antworten. Habe schon des öfteren einen brauchbaren Code gebastelt, ein anderer hat den aber viel eleganter hinbekommen. Oder jemand hat mit einer Formel erledigt, wofür ich VBA verwendet habe.
Den allerwichtigsten Rat bezüglich VBA will ich Dir aber gleich mal geben: Vergiss "Select" und "Activate", die benötigt man so gut wie nie. Falls Du jemals einen VBA-Kurs machen solltest und im Code des Dozenten kommen diese beiden Befehle häufig vor, dann verlasse den Kurs und such Dir einen anderen.
Gruß, Jogy
Anzeige
AW: :-(
14.07.2010 13:10:26
Rudi
Hallo,
Ihr habt euch VBA bestimmt auch nicht alleine ohne Hilfe beigebracht oder?

gibt's noch ne andere Methode? ;-)
Im Ernst: Alles selbst ertüftelt +Foren lesen +Hilfe lesen
Gruß
Rudi
:-( - aber nicht alle...
14.07.2010 13:56:19
NoNet
Hallo Daniela,
Sag mal wie seit ihr denn alle drauf...
Ich glaube, die meisten hier im Forum sind GUT drauf, ansonsten würden sie/wir nicht unsere Hilfe unentgeltlich für fremde Menschen anbieten...
Dass ICH etwas verärgert über Deine Postings bin (bzw. dass ich die "mundgerechte" Beantwortung in Deinem Fall für sehr schwierig halte), habe ich ja bereits ausreichend dokumentiert und möchte das auch nicht andauernd wiederholen, denn meine Intension hierim Forum ist es auch, anderen bei Excel-Problem(ch)en weiterzuhelfen. Dass andere auch teilweise Probleme haben, erkennst Du an deren Reaktionen - diese sind jedoch sicherlich nicht böse gemeint, denn die meisten haben Dir auch schon fachliche Antworten gegeben.
Das Problem besteht viel eher darin, dass Du die Lösungen millimeter-passgenau benötigst, da Du selbst kleinste Code-Anpassungen mangels VBA-Kenntnisse nicht selbst durchführen kannst und wegen jedes i-Tüpfelchens erneut nachfragen musst...
Eine Lösung kann aber nicht immer 100% passgenau erstellt bzw. formuliert werden, so dass Du dann nur antworten kannst "geht nicht", ohne den Helfenden mitteilen zu können WAS oder WESHALB eine Lösung nicht funktioniert. Für uns "Profis" ist das dann ein reines Stochern im Nebel und das macht alles andere als Spaß. Leider kannst Du aber wohl nicht erkennen bzw. einsehen möchtest, dass man für manche Dinge zumindest geringe Vorkenntnisse benötigt (Stichwort "Dolmetscher" und "Gourmet-Restaurant"). Diese Vorkenntnisse kann man aber nicht mal eben so "by the way" anhand einiger Posts in einem Formu erlernen, sondern das dauert seine Zeit - und diese Geduld scheinst Du nicht mitzubringen - schade eigentlich :-(
Zum Thema "VBA erlernen alleine ohne Hilfe" habe ich dir gestern 2 Links zugeschickt ("...denn sie wissen nicht, WAS sie tun...", dort steht eigentlich (fast) alles drin und das trifft wohl auch auf 99% aller Forumsteilnehmer zu.
Schöne Grüsse nach SA,
NoNet
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige