Clever-Excel-Forum

Normale Version: ActiveX Combobox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

Ausgangssituation:

Die Schriftgröße normaler Dropdownlisten ist zu klein. Und das Anpassen der Schriftgröße und Formatierungen der kompletten Datei ist zu aufwendig.

Daher dachte ich mir ich versuche es mit dem ActiveX Steuerelement Combobox.

Einmal Dropdowns bei denen Text ausgewählt wird und anhand vom Text gewisse Makros ausgelöst werden.
Und einmal Dropdowns um ein Datum im Format MMM YY also Okt 19 auszuwählen.

Problem 1:

Ich habe das Auslösen der Makros mit If Target.Adress = Zelle Then … gesetzte. Das Funktionierte zuvor mit normalen Dropdowns auch. Doch mit der Combobox Dropdownliste werden die Makros trotz Verlinkung der als Target.Adress gesetzten Zelle nicht.

Problem 2:

Die ActiveX Combobox hat ein Problem mit der Verarbeitung bestimmter Datenformate. Mein Input, Format der Auswahlliste und Format des Ausgabewerts sollten alle ein Datum des Formats MMM YY wie z. B. Okt 19 sein.

Wenn die Quelledaten als Datum formatiert sind, werden Sie richtig in der Auswahlliste angezeigt aber der Ausgabewert wird als Zahl und nicht als Datum ausgegeben.

Wenn ich wie öfters Vorgeschlagen die Quelldaten als Textformatiere und nur den Ausgabewert dann über VBA als Datum umformatiere, hat der Ausgabewert zwar das richtige Format aber das Format der Daten in der Auswahlliste ist wieder eine Zahl.



Ich hoffe ich habe es gut genug erklärt und denke das ist auch ohne Beispieldatei verständlich.

Vielen Dank schonmal.

Gruß stchwint
Hallo, :19:

prinzipiell so: :21:
[attachment=26776]

Ergebnis ist kein Datum - wird aber richtig angezeigt. Dodgy

Wenn du mehr Hilfe möchtest - zumindest von meiner Seite aus - lade eine aussagekräftige Beispieldatei hoch. Blush
Hallo Case,

das Ergebnis in der Zelle wird mit Formeln wie, WERT(), Jahr() und TEXT( ;"MMMM JJJJ") verarbeitet. Von dem her müsste das Ergebnis in der Zelle glaube ich gar kein Datum sein. Danke Dir! Aber wäre das möglich?

Die Auswahl in der Liste kann ja ein Text. Dann müsste ja nur das Ergebnis wieder in ein Datum mit dem Format (" MMM YY") umgewandelt werden oder?
Also Problem 2 wäre für mich gelöst
Zu meinem Problem 1:

Wie aktiviere ich je nach Textausgabe in der ActiveXCombobox ein bestimmtes Makro?
Zuvor mit dem Code:

Private Sub Worksheet_Change(ByVal target As Range)
If target.Address = "$E$19" Then

Call Makro1...

Nun müste ich ja die Comboboxansprechen oder die linked Cell
Oder


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ActiveWindow.Zoom = 100
 
  Application.EnableEvents = False
  If Target.Count = 1 And Not Intersect(Target, Cells.SpecialCells(-4174)) Is Nothing Then ActiveWindow.Zoom = 140
  Application.EnableEvents = True
End Sub
Ich hebe meinen warnenden Zeigefinger, snb...  :21:
Der long-Wert .Count kann im SelectionChange böse abfliegen.
Daher IMMER .CountLarge
Zu allem Überfluss sind dann bei Dir die Events abgeschaltet!

Gruß Ralf
Zitat:Zu allem Überfluss sind dann bei Dir die Events abgeschaltet!

Wie meinst du das ?
Hast du schon mal getste ohne application.enableevents=false ?
Ich meinte:
?Cells.Count
ergibt den Laufzeitfehler 6 (Überlauf)

Da Du aber erst nach 
application.enableevents=false
prüfst, kommt es eventuell zu obigem Fehler und Events wird nicht wieder zurück gestellt.

Entweder On Error Goto
oder (besser!) .CountLarge

Gruß Ralf
Het kwartje (gibt's nicht mehr) is gevallen
Nur wenn target.count > 10^15 wird application.enableevents = False nicht mehr aufgehoben.
Hallo,

also die Lösung von Case hat eigentlich gut geklappt. Nur bekomme ich jetzt beim öffnen der Datei den "Laufzeitfehler 70 Zugriff verweigert".

Die 151 im Code kommt von selber egal was ich zuvor für eine Zahl eingebe.

Folgender Code:

Option Explicit
Private Sub Workbook_Open()
    Dim lngTMP As Long
   
    For lngTMP = 98 To 145
        Tabelle1.ComboBox6.AddItem (Tabelle1.Cells(lngTMP, 151).Text)
      
    Next lngTMP
      For lngTMP = 49 To 96
        Tabelle1.ComboBox5.AddItem (Tabelle1.Cells(lngTMP, 151).Text)
      
    Next lngTMP
 
   
      
  
 
End Sub
Seiten: 1 2