Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1300to1304
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
VB script für combobox in aktiver Zelle
11.03.2013 09:20:24
schneijo
Hallo,
ich habe folgendes Problem:
in der aktiven Zelle von sheet"Messtechnik" möchte ich eine dropbox generieren, deren Einträge aus einem bestimmten Bereich von sheet"Komponentenliste" kommt.
Da sich der Bereich aus sheet"Komponentenliste" verändern kann möchte ich ein VB-code für die Suche nach den entsprechenden Einträgen und dem platzieren der dropbox nutzen. Das suchen ist kein Problem für mich ... nur die Dropbox in der Zelle ...
Das Makro soll per Button ausgelöst werden!
kann mir jemand weiterhelfen?
Vielen Dank!
Zweites Problem:
Wie kann ich einen weiteren VB-code auslösen, in dem Moment, wo ich eine Auswahl in der Dropbox treffe? Wie kann ich das Auswahl-Event als Auslöser für einen VB-code nehmen?
geht das?
Grüße schneijo

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VB script für combobox in aktiver Zelle
11.03.2013 09:26:30
Hajo_Zi
zu 2, benutze das Change ereignis der Tabelle.

AW: VB script für combobox in aktiver Zelle
11.03.2013 09:33:25
Klaus
Hi,
Da sich der Bereich aus sheet"Komponentenliste" verändern kann möchte ich ein VB-code für die Suche nach den entsprechenden Einträgen und dem platzieren der dropbox nutzen. Das suchen ist kein Problem für mich ... nur die Dropbox in der Zelle ...
Das Makro soll per Button ausgelöst werden!

daraus lese ich weder eine Frage noch eine Aufgabenstellung ... was möchtest du denn? Einen VB-Code zum befüllen der Combobox?
Wenn das Suchen kein Problem ist, dann gib dafür doch schonmal den Code raus (am besten in einer Musterdatei). Die Stelle wo die DropBox hin soll malst du im Excel einfach an.
Grüße,
Klaus M.vdT.

Anzeige
AW: VB script für combobox in aktiver Zelle
11.03.2013 09:44:18
schneijo
Hallo,
Also naja anfängerhaft wie ich bin habe ich folgenden code verfasst:
Sub nachDropWerteSchreiben()
' Werte werden nach auswahl in der Dropbox aus weiterer Tabelle übernommen
If Sheets("Messtechnik").Change = True Then
Sheets("Messtechnik").Cells(15, "I").Value = 666  'steht für beliebige Aktion
Sheets("Messtechnik").Cells(16, "I").Value = 777  'steht für beliebige Aktion
End If
End Sub

Die Methode .Change kennt VB nicht ...
was mache ich falsch?
Ich schätze die Logik ist sowieso noch nicht richtig.
Der Code müsste doch permanent durchlaufen werden, um das gewünschte Ergebnis zu erzielen.
Nochmal die Fragestellung:
Wie kann ich einen VB-code auslösen, in dem Moment, wo ich eine Auswahl in einer Dropbox treffe? Wie kann ich das Auswahl-Event als Auslöser für einen VB-code nehmen?

Anzeige
AW: VB script für combobox in aktiver Zelle
11.03.2013 09:46:36
Klaus
Hi,
das hier ist ein Change Ereigniss. Kommt direkt in den Code des Tabellenblattes, NICHT in ein Modul1 oder sonstwo!
Private Sub Worksheet_Change(ByVal Target As Range)
'[Dein Code]
End Sub
Grüße,
Klaus M.vdT.

AW: VB script für combobox in aktiver Zelle
11.03.2013 09:49:07
schneijo
Ok, ... ich lerne ständig was dazu ... wie komme ich an den code des Tabellenblatts?
Ich nehme mal an damit ist kein Eintrag in einer bestimmten Zelle gemeint.

AW: VB script für combobox in aktiver Zelle
11.03.2013 10:10:38
schneijo
Hallo Klaus,
vielen Dank ... hab die Stelle für den Code des Tabellenblatts gefunden.
Gibt es jetzt noch eine Möglichkeit, die Aktion "Change" nur auszuführen, wenn sich in einer bestimmten Spalte etwas ändert? Also mit eingeschränktem Bereich?
Grüße schneijo

Anzeige
AW: VB script für combobox in aktiver Zelle
11.03.2013 10:57:09
Klaus
Hi,
im Beispiel wird "[Dein Code]" nur ausgeführt, wenn sich mindestens eine oder mehr der selektierten Zellen mit dem Bereich B7:C10 überschneidet.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rLaubt As Range
Set rLaubt = Range("B7:C10")
If Not Intersect(Selection, rLaubt) Is Nothing Then
'[Dein Code]
End If
End Sub

Grüße,
Klaus M.vdT.

AW: VB script für combobox in aktiver Zelle
11.03.2013 09:48:01
Hajo_Zi
dies ist ein Forum für Excel, hier geht es um VBA, VB ist ein anderes Forum.
Die Aktion ist unter der Tabelle.
Gruß Hajo

Anzeige
AW: VB script für combobox in aktiver Zelle
11.03.2013 09:55:59
Rudi
Hallo,
Combobox in Messtechnik einfügen, Rechtsklick auf Register-Code anzeigen
Code:
Option Explicit
Dim bolCode As Boolean
Private Sub ComboBox1_Change()
If Not bolCode Then
'Änderung wurde nicht durch Code hervorgerufen
MsgBox "Hallo"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngDaten As Range
ComboBox1.Visible = False
If Target.Column = 1 Then 'Spalte A
If Target.Row > 1 Then  'Zeile>1
bolCode = True
With Sheets("Komponentenliste")
'Datenquelle ermitteln; A2:Ax
Set rngDaten = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
End With
With ComboBox1
.List = rngDaten.Value 'Werte
.Top = Target.Top 'oben
.Left = Target.Offset(, 1).Left 'links
.LinkedCell = Target.Address  'Zielzelle
.Visible = True
End With
bolCode = False
End If
End If
End Sub

Name der CB anpassen.
Gruß
Rudi

Anzeige
huch..Beitrag nich gesehen
11.03.2013 10:10:35
Oberschlumpf
Hallo
Vielleicht hilft ja auch schon die Idee von Rudi.
Ciao
Thorsten

so wird das nix
11.03.2013 10:09:21
Oberschlumpf
Hi schneijo (wurdest du wirklich so getauft?! - fiese Eltern!)
Oder anders: In diesem Forum kommunizieren wir sehr gerne mit den Real-Vornamen.
So, nun zu meinem Betreff "So wird das nix".
Wir benötigen von dir bitte diese Infos/Materialien:
1. Erstell bitte eine Bsp-Datei, in der dein Problem/deine Frage erkennbar ist
(du kannst uns auch deine Originaldatei zeigen, wenn das möglich ist)
Beschreib bitte innerhalb der Datei noch mal dein Problem
2. Starte den File-Upload, um die Datei hochzuladen
Der Button "Zum File-Upload" ist auf jeder Antwortseite zu sehen - unterhalb des Textfeldes, in dem du deine Antworten einträgst.
3. Nachdem du die Datei hochgeladen hast, wird dir ein Link gezeigt.
Diesen Link musst du in deiner nächsten Antwort einfügen, damit wir deine Datei herunterladen/ansehen können
So, hoffe, das reicht als kleine Anleitung, wie man hier Dateien uploaden kann.
Hilfts?
Ciao
Thorsten

Anzeige
AW: so wird das nix
11.03.2013 10:57:04
schneijo
Hallo,
also hier das File ... Kommentar findet sich in erster Tabelle
Ich würde mich über ein bisschen Hilfe freuen.
vielen Dank
https://www.herber.de/bbs/user/84285.xlsm

AW: so wird das nix
11.03.2013 11:02:16
Klaus
Hi,
zwei Sheets, 6 Module voller Code, eine leere Userform, zwei Tabellen.
Kein Stück Umsetzung der oben genannten Vorschläge zu sehen, geschweige denn der angeblich schon vorhandenen Methode zum ermitteln der Komponenten, ein DropDown gibt es auch noch nicht (WO soll das hin? In jede Zelle? In die Kopfzeile? In die leere Userform?)
Ich geh da jetzt nicht in die Detailanalyse.
Mach es so:
ermittel irgendwo die Komponenten für das Dropdown und erstelle jenes dann über DATEN-GÜLTIGKEIT.
Die übrigen einträge ziehst du dir per SVERWEIS.
Grüße,
Klaus M.vdT.

Anzeige
AW: so wird das nix
11.03.2013 11:15:36
schneijo
OK, ich hab wohl noch nicht genug abgespeckt, sorry, das File war wirklich groß.
ich versuchs heute nachmittag nochmal ...
Danke schon mal für die Lösungsvorschläge bis hier hin.
die lasse ich schon mal einfließen und dann stelle ich das File nochmal mit meinen Restfragen ein.
Grüße und bis dann
Johannes

AW: Ein Beispiel für Gültigkeit / SVERWEIS
11.03.2013 13:27:54
schneijo
Hallo Klaus,
Danke für dein Beispiel ...
Die Sache mit dem S-Verweis kann ich ungesehen so übernehmen.
Ist sehr einfach - super Sache.
Nur die Bereichsangabe über die Datenüberprüfung - Dropbox muss ich wahrscheinlich über VBA lösen.
Der Bereich kann irgendwo im Sheet liegen und beliebig groß sein.
Ich versuchs mal mit der Lösung die heute morgen dazu eingestellt wurde.
Bei Bedarf melde ich mich.
Danke nochmals und
Grüße
Johannes

Anzeige
AW: Ein Beispiel für Gültigkeit / SVERWEIS
11.03.2013 14:16:58
Klaus
Nur die Bereichsangabe über die Datenüberprüfung - Dropbox muss ich wahrscheinlich über VBA lösen.
Davon bin ich fast ausgegangen.
Fass aber im VBA nicht direkt den Bereich der Gültigkeiten an. Definiere die Gültigkeiten über einen Namen, und verändere im VBA den Bezug des Namens. Dann sparst du dir ein paar Zeilen Code und kannst das auch einfacher erweitern.
Grüße,
Klaus M.vdT.

AW: Ein Beispiel für Gültigkeit / SVERWEIS
12.03.2013 00:47:03
schneijo
Hallo alle zusammen,
ich habe leider weiterhin Probleme mit der Dropbox via VBA.
Anbei habe ich nochmals ein File vorbereitet.
Dort ist das Problem nochmal näher beschrieben.
Der code ist leider noch nicht ganz funktional.
Seht selbst ...
Ich würde mich über ein wenig Hilfe freuen.
Vielen Dank
Johannes
https://www.herber.de/bbs/user/84299.xlsm

Anzeige
AW: Ein Beispiel für Gültigkeit / SVERWEIS
12.03.2013 08:19:11
Klaus
Hallo Johannes,
der Weg ist klar: Dropdown über Zellengültigkeit, per Makro den Bereich der Zellengültigkeit (Umweg über Name) verändern. Den Inhalt für den Namen / das Dropdown, so sagtest du Anfangs, kannst du dir selber zusammenstellen.
Ich möchte jetzt deinen Code nicht im Detail analysieren. Dein "NextLeerInSpalte" zählt übrigens Zeilen durch, nicht Spalten. "TxtInSpalte" genauso. Was die beiden Makros machen sollen wird mir auch nicht klar ... sie werfen halt eine MsgBox aus oder nicht, aber es wird kein Wert gespeichert oder übergeben, mit dem das übergeordnete Makro weiter arbeiten könnte (dann währen es Functions, keine Subs!)
Meinen Vorschlag, per Makro den Namen zu ändern, hast du zu 0% versucht einzubauen. Die auskommentierten Comboboxteile sind sicherlich Artefakte eines vorherigen versuchs.
Vorschlag: Du erklärst einmal am Beispiel, WIE die Auswahlliste sich zusammen setzen soll. Das erklärst du in Prosa, ausführlich und detalliert als würdest du es einem Kind erklären. Wenn ich dann sicher weiss was passieren soll, schau ich mal ob ich das in Makroform bekomme.
Bitte denk daran: Nur du verstehst deinen Dateiaufbau sicher. Erkäre auch Dinge, die dir zu 100% selbstverständlich vorkommen.
Grüße,
Klaus M.vdT.

AW: Ein Beispiel für Gültigkeit / SVERWEIS
12.03.2013 09:16:01
schneijo
Hallo Klaus,
Nee, dass ist ja gerade mein Problem. Ich bekomme keinen lauffähigen code hin, der eine Dropdown-Liste in meiner aktiven Zelle erzeugt. Leider sind die Beispiele im Netz meist unbrauchbar, oder ich verstehe sie nicht.
Mit den Sub´s "NextLeerInSpalte" und "TxtInSpalte" laufe ich innerhalb einer Spalte die Zeilen durch, das ist richtig und so gewollt. (vielleicht ist die Namensgebung etwas gewöhnungsbedürftig ...
Normalerweise programmiere ich embedded software, assembler usw. für Automatisierungssysteme ... da ist das nicht so wichtig).
Wie auch immer - die Funtionen liefern mir die Anfangszeile und die Endzeile des Dropdownbereiches (Spalte ist immer "D"). Damit steht in "dRowCount" die Anfangszeile und in "dLastRowCount" die Endzeile des Dropdownbereiches (Modul1).
Der Bereich ist im auskommentierten Code in "rngDaten" zusammengefasst
Ich bringe es leider nicht fertig, damit eine Dropbox zu füllen. - siehe Modul1
Die MsgBox Ausgaben dienten nur der Überprüfung und werden nicht gebraucht!
Das ist mein Problem.
Grüße Johannes

AW: Ein Beispiel für Gültigkeit / SVERWEIS
12.03.2013 09:49:59
Klaus
laufe ich innerhalb einer Spalte die Zeilen durch, das ist richtig und so gewollt
OK, das macht sogar Sinn! Das nehme ich so hin und pfusche dir nicht mehr in deine Namenskonvention.
die Funtionen liefern mir die Anfangszeile und die Endzeile des Dropdownbereiches (Spalte ist immer "D").
Ok ... tatsächlich war mir "ByRef" nicht geläuftig. Jetzt sehe ich auch wass die Funktions machen.
Sub MessungDropDown()
' DropDown-Menü für Messungen
Dim rngDaten As Range
Dim dRowCount As Double
Dim dLastRowCount As Double
Dim dCount As Double
Dim wksOld As Worksheet
Set wksOld = ActiveSheet
'Bereich auswählen
Sheets("Komponentenliste").Activate
dCount = Range("A65536").End(xlUp).Row
Call SucheTxtInSpalte(4, dCount, "Messeingänge", dRowCount)
dRowCount = dRowCount + 1
'MsgBox dRowCount
Call SucheNextLeerInSpalte(4, dRowCount, dLastRowCount)
dLastRowCount = dLastRowCount - 1
'MsgBox dLastRowCount
'MsgBox dCount
Set rngDaten = Range(Cells(dRowCount + 1, 4), Cells(dLastRowCount, 4))
'MsgBox rngDaten
wksOld.Activate
With ActiveCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="='Komponentenliste'!" & rngDaten.Address
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Ich habe der aktivierten Zelle den Bereich "Komponentenliste!" & rngDaten zugewiesen, einfach per Datengültigkeit.
Meine Anmerkung dazu:
Die Datengültigkeit könntest du auch gleich dem gesamten Bereich zuweisen statt nur der aktiven Zelle.
Ich war versucht, die ".activate" aus deinem Code rauszunehmen. Aber deine Text-Spalten-Leer SUBS referenzieren auf die aktive Tabelle, soweit ich die verstanden habe. Nach dem Code gehe ich mit activate wieder ins alte Blatt zurück, dass ich mir in wksOld gemerkt habe.
Wenns für dich so iO ist, ist gut ... ich würd dir aber raten, deine Text-Leer-Subs nochmal umzuschreiben um so das "activate" am Anfang des Codes loszuwerden. Musst ja "nur" das gewählte Blatt als Variable mit übergeben und dann alles in WITH setzen.
Grüße,
Klaus M.vdT.

eine Kleinigkeit (und Grüße an NoNet)
12.03.2013 09:58:57
Klaus
Hi,
eine Kleinigkeit noch zu einem anderem Thema:
du benutzt
dCount = Range("A65536").End(xlUp).Row
um die letzte Zeile zu ermitteln. Das ist ein Artefakt aus Excel-2003 und früher, in den heutigen Excelversionen kann diese Zeile gerne mal beschrieben sein - oder ausgeblendet oder sonstwas.
Die letzte Spalte ermittelt man versionsunabhängig so:
dCount = Cells(Rows.Count,1).End(xlUp).Row
Grüße,
Klaus M.vdT.

AW: Ein Beispiel für Gültigkeit / SVERWEIS
12.03.2013 10:34:14
schneijo
Hey, die Geschichte läuft ... Super, vielen Dank!
Ich muss konstatieren, habe selbst einfach zu wenig Erfahrung mit VBA.
Aber man wächst ja bekanntlich mit seinen Aufgaben.
Vielen Dank nochmals und
schöne Grüße
Johannes

Danke für die Rückmeldung! mit Text.
12.03.2013 10:43:33
Klaus
Ich muss konstatieren, habe selbst einfach zu wenig Erfahrung mit VBA.
Dafür kannst du Assembler ...
Tatsächlich habe ich eigentlich nichts an der Liste gemacht. Ich habe nur einmal den Vorgang Datengültigket-Liste durch den Makrorekorder gejagt, den resultierenden Code unter dein Makro kopiert und den Bereich durch :="='Komponentenliste'!" & rngDaten.Address ersetzt.
Worauf ich hinauswill: Der Makrorekorder ist (meistens) dein Freund, wenn es nur darum geht die nötigen VBA-Vokabeln heraus zu finden!
Dafür danke ich DIR dafür, dass ich heute die ByRef-Deklaration innerhalb eines Calls gelernt habe! Das ist super nützlich und ich werde es sicherlich bald selbst einsetzen.
Grüße,
KLaus M.vdT.

AW: Danke für die Rückmeldung! mit Text.
12.03.2013 11:44:46
schneijo
Hallo Klaus,
ja, die Möglichkeit mit ByREF in Call kannte ich noch so sinngemäß aus der Studienzeit (C++).
Hier für mein erstes VBA Projekt hatte ich expliziet danach gesucht und es auch relativ schnell hinbekommen.
Grüße Johannes

andere Programmiersprachen ...
12.03.2013 12:05:13
Klaus
Hey,
du kannst Assembler und C++?
Ich kann etwas VBA, Q-Basic, GW-Basic und Basic :-) und ein ganz bisschen TurboPascal.
Lass uns tauschen.
Grüße,
Klaus M.vdT.

AW: andere Programmiersprachen ...
12.03.2013 17:52:28
schneijo
Hallo Klaus,
ja, ich bin Elektrotechniker und da von Hause aus nahe an der Hardware dran.
Das heißt man kann eine ganze Reihe von Programmiersprachen, die man im Hausgebrauch gar nicht gebrauchen kann.
Die meisten embedded Systeme werden in "C" programmiert. Alte µController oder die 8bit varianten in Assembler (eben deren spezifische Maschinensprache). Heute bin ich in der Automatisierungssparte unterwegs. Dort gibt es auch sehr oft eine hardware nahe Programmierung z.B. AWL usw.
Damit kann man aber kaum was im Alltag anfangen, also ;-(
und bei so "einfachen" Dingen wie Excel versagen wir dann ...
Naja, machs gut ... vielen Dank nochmal.
bis bald
Grüße Johannes

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige