Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Excel VBA Wert aus ComboBox wird nicht übernommen

Frage Microsoft Microsoft Office

Mitglied: alexander01

alexander01 (Level 1) - Jetzt verbinden

11.07.2009, aktualisiert 22:50 Uhr, 23510 Aufrufe, 9 Kommentare, 1 Danke

Hallo, ich komme hier nicht weiter

Hallo,
ich habe eine neue Mustervorlage in Excel erstellt, habe z.T. Textboxen und ComboBoxen eingefügt. Habe über den VB-Editor Code eingegeben:
Hier für ComboBox1:

Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.Clear
.AddItem "Test1"
.AddItem "Test2"
.AddItem "Test3"
.AddItem "Test4"
.ListIndex = 0
End With
End Sub

Nach Neustart von Excel und Auswahl der eigenen Vorlage zum Erstellen eines neuen Arbeitsblattes werden in der ComboBox1 auf Anklicken hin die 4 Möglichkeiten angezeigt, es wird aber immer nur die erste ("Test1") in das Feld der Kombinationsbox übernommen. Ich kann durch Anklicken also nicht eine Möglichkeit ab 2. Position "auswählen" / "übernehmen".
Ich möchte aber, das in den vorhandenen ComboBoxen die jeweils gewählten Einträge auch nach Verlassen der ComboBox in dieser angezeigt werden.

Was mache ich falsch?
Mitglied: 76109
12.07.2009 um 08:16 Uhr
Hallo alexander01!

Das sollte Dir weiterhelfen

ComboBox in Tabellenblatt:
01.
DieseArbeitsmappe: 
02.
 
03.
Private Sub Workbook_Open() 
04.
   Call Init_ComboBox1 
05.
End Sub 
06.
 
07.
Private Sub Init_ComboBox1() 
08.
    Dim i As Integer 
09.
    With Worksheets("Tabelle1").ComboBox1 
10.
        .Clear 
11.
         For i = 1 To 4: .AddItem "Test" & i:  Next 
12.
        .ListIndex = 0 
13.
    End With 
14.
End Sub 
15.
 
16.
In Tabelle1: 
17.
 
18.
Private Sub ComboBox1_Change() 
19.
    Range("A1") = ComboBox1.Text  'Tue etwas mit Auswahl 
20.
End Sub
ComboBox in Formular:
01.
Private Sub UserForm_Initialize() 
02.
    Dim i As Integer 
03.
    With ComboBox1 
04.
        .Clear 
05.
         For i = 1 To 4: .AddItem "Test" & i:  Next 
06.
        .ListIndex = 0 
07.
    End With 
08.
End Sub 
09.
 
10.
Private Sub ComboBox1_Change() 
11.
    Range("A1") = ComboBox1.Text  'Tue etwas mit Auswahl 
12.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: alexander01
12.07.2009 um 09:52 Uhr
Hallo, Dieter

ich habe jetzt Zeilen 3-5 in "Diese Arbeitsmappe" eingefügt

Zeile 7-14 angepasst (die Nummerierung durch mich war nur sporadisch, es stehen dort bestimmte Ausdrücke):

01.
 
02.
Private Sub Init_ComboBox1() 
03.
With ComboBox1 
04.
    .Clear 
05.
    .AddItem "abzbhbxx" 
06.
    .AddItem "xxcsdcc" 
07.
    .AddItem "dccjc jö." 
08.
    .AddItem "sdmc cer" 
09.
    .AddItem "cccjönfkköfo" 
10.
    .AddItem "andere" 
11.
    .ListIndex = 0 
12.
End With 
13.
End Sub 
14.
 
Zeile 18-20 in das Tabellenblatt eingefügt. (ich denke, ich habe kein Formular, ich habe eine Tabelle auf meine Vorstellungen hin angepasst)

Es erscheint eine Fehlermeldung: Laufzeitfehler 424, Objekt erforderlich, der Debugger weist auf .Clear in der Privat Sub Init_ComboBox1() hin.

Gruß

Alexander
Bitte warten ..
Mitglied: alexander01
12.07.2009 um 10:01 Uhr
Halt !

ich habe einen Fehler entdeckt,

ich habe statt:
With Worksheets("Tabelle1").ComboBox1
with ComboBox1 geschrieben, nach Änderung wird jetzt der ausgewählte Text in das Feld der ComboBox übernommen!

Nun möchte ich aber, das die Textauswahl in diesem Feld durch das Abspeichern des Arbeitsblattes gespeichert wird. Dies erfolgt nicht. Es ist immer wieder der 1. Eintrag voreingestellt (sicher wegen .ListIndex = 0)

Habe ich einen Denkfehler?
ich möchte eine generelle Mustervorlage (habe ich jetzt "fertig").
Diese möchte ich starten, und nach entsprechenden Einstellungen der ComboBoxen als Arbeitsblatt x oder y oder z abspeichern. in den Feldern der ComboBoxen sollen aber nach erneutem Öffnen des Arbeitsblattes die eingestellten Texte erhalten bleiben.


Gruß
Alexander
Bitte warten ..
Mitglied: Minion
12.07.2009 um 10:54 Uhr
In Änderung Deines Quelltextes ... Initialisierung beim öffnen der Mappe...

Private Sub Workbook_Open() 
With Tabelle1.ComboBox1 
.Clear 
.AddItem "Test1" 
.AddItem "Test2" 
.AddItem "Test3" 
.AddItem "Test4" 
.ListIndex = Range("A1").Value 
End With 
End Sub
1. Hier ist das Steuerelement in 'Tabelle1'
2. Der aktivierte Listenindex wird aus der Zelle A1 ausgelesen.

Private Sub ComboBox1_Change() 
Range("A1").Value = ComboBox1.ListIndex 
End Sub
Beim Ändern des Listeneintrages wird der aktuelle in 'A1' eingetragen.

Somit steht in 'A1' immer der letzte Eintrag drinne ...

So iO?
Bitte warten ..
Mitglied: 76109
12.07.2009 um 11:26 Uhr
Hallo alexander01!

Diese Einstellungen werden nicht automatisch gespeichert.

Minion hat ja schon eine Möglichkeit angeboten.

Du könntest auch ein ganz andere Methode verwenden, indem Du ein verstecktes Tabellenblatt z.B. mit dem Namen "Init" erstellst, wo Deine Liste defininiert ist und der ListIndex gesichert wird. Klingt vielleicht kompliziert, ist es aber nicht.

1. Erstelle ein Tabellenblatt mit dem Namen "Init"
2. Schreibe Deine Liste in die Zellen z.B. Zelle A1 = Test1, A2 = Test2 usw.
3. Lasse z.B. die Zelle B1 frei, um hier die Einstellung zu speichern.
4. Wähle im VB-Editor das Tabellenblatt "Init" und stelle im Eigenschaftsfenster Visible = xlVeryHidden ein
5. Füge in Deiner ComboBox im Eigenschaftsfenster unter ListFillRange z.B. Init!A1:A10 ein

Nachdem sich die ComboBox von selbst initialisiert, brauchst Du nur noch den ListIndex beim öffnen der Arbeitsmappe mit dem Wert aus Init!B1 zu initialisieren und bei einer Auswahl in der ComboBox, wird der ListIndex immer automatisch im Tabellenblatt Init!B1 eingetragen.

Das ginge dann in etwa so:

In DieseArbeitsmappe:
01.
Private Sub Workbook_Open() 
02.
   Sheets("Tabelle1").ComboBox1.ListIndex = Sheets("Init").Range("B1") 
03.
End Sub
Im Tabellenblatt Tabelle1:
01.
Private Sub ComboBox1_Change() 
02.
   'Tue was 
03.
    Sheets("Init").Range("B1") = ComboBox1.ListIndex 
04.
End Sub
Im Tabellenblatt Init:
01.
A1 = Test1 
02.
A2 = Test2 
03.
A3 = Test3 
04.
.......... 
05.
B1 = 0
Gruß Dieter
Bitte warten ..
Mitglied: alexander01
12.07.2009 um 18:23 Uhr
Super, danke Euch beiden!

ich habe die Variante mit dem "versteckten" Tabellenblatt gewählt, da ich auf meinem "Datenblatt" keine zusätzlichen Texte haben wollte.

darf ich noch 2 Fragen stellen?

1. wenn ich im Code des Tabellenblattes "Init" "visible=xlSheetVeryHidden" wähle (es also wohl "verstecken" möchte), kommt eine Fehlermeldung. Kann der Code der anderen Tabellenseite dann nicht mehr auf den gespeicherten ListIndex zugreifen?

2. eine der ComboBoxen soll Zahlen enthalten, aber mit 1 Dezimalstelle formatiert (also z.B. 2,0). Obwohl ich die entsprechende Spalte im Tabellenblatt "Init" als Zahl mit 1 Dezimalstelle formatiert habe (und dort dann 2,0 steht), erscheint in der Combobox nach Speicherung nur "2". Wie bekomme ich eine "2,0" dahin?

Gruß und nochmals Danke

Alexander
Bitte warten ..
Mitglied: alexander01
12.07.2009 um 19:34 Uhr
Problem 1 ist gelöst, hatte wohl irgendwo einen Fehler drin.

bliebe noch Problem 2...

Alexander
Bitte warten ..
Mitglied: 76109
12.07.2009 um 20:05 Uhr
Hallo alexander01!

Punkt 1:
Dir stehen mit dem versteckten Tabellenblatt mit Ausnahme von ganzes Tabellenblatt Kopieren/Verschieben/Löschen..., sonst alle Funktionen zur Verfügung.

Punkt 2:
Du musst die Zellen als Text formatieren: "2,10", "2,00"

Gruß Dieter
Bitte warten ..
Mitglied: Minion
12.07.2009 um 20:06 Uhr
Hier mal eine Excel-Datei zum anschauen ... --> 1
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA Wert hochzählen (1)

Frage von Florian86 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA: Wert von einer Website (pdf-Dokument) auslesen und in Excel kopieren (16)

Frage von Stern123 zum Thema VB for Applications ...

Microsoft Office
gelöst Excel VBA Letzte Zelle Suchen dann rechnen und Wert in Zelle Übertragen (3)

Frage von Addi089 zum Thema Microsoft Office ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...