Excel 10 Werte aus Matrix auslesen und wiedergeben

loga

Cadet 2nd Year
Registriert
Okt. 2013
Beiträge
22
guten tag,

ich habe eine combobox welche aus Daten einer Matrix gefüttert wird.
dort wähle ich etwas aus, was in der matrix im Bereich von A1:A93 auf dem Tabellenblatt "werte".

mein Problem liegt darin, nacher aus der entsprechenden Zeile die werte >= 25 auszulesen und die passende x-Wertbeschriftung wiederzugeben.

Bsp.:
ich wähle in der combobox Achaea aus und hätte gerne, das es mir auf dem Tabellenblatt
Achaea, Asia, Bithynia... mit den passenden Werten der Matrix in ein activX Textfeld wiedergibt.

hier die Exceltabelle samt Matrix
Anhang anzeigen rechner1.rar

grüße daniel
 
Zuletzt bearbeitet:
Hy loga,

ich kenne mich ein wenig mit vba aus und gucke mir dein Problem mal an.

Ich hoffe nur, dass ich es richtig verstanden habe. Excel-Probleme lassen sich ja immer schwer erklären.

vg

VORSCHLAG 1:

Der Code ist nicht unbedingt sauber, aber er bietet dir erstmal einen Einblick.

Das Textfeld musste durch ein Listenfeld ersetzt werden. Textfelder können nur über Umwege mehrzeilig angesprochen werden. Mit einem Listenfeld geht das ein- und auslesen einfacher.

Ich könnte es auch gleich "richtig" machen, aber dazu sollten die Tabellenblattnamen, die Anordnung etc. endgültig sein, damit ich es richtig deklarieren kann.

Wenn was ist, sag bescheid.
vg
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Snooty schrieb:
Nur die grünen Werte >25?

nein, die tabelle ist nicht von mir.
die farben sind nicht von bedeutung...
Ergänzung ()

Bemme90 schrieb:
Hy loga,

ich kenne mich ein wenig mit vba aus und gucke mir dein Problem mal an.

Ich hoffe nur, dass ich es richtig verstanden habe. Excel-Probleme lassen sich ja immer schwer erklären.

vg

VORSCHLAG 1:

Der Code ist nicht unbedingt sauber, aber er bietet dir erstmal einen Einblick.

Das Textfeld musste durch ein Listenfeld ersetzt werden. Textfelder können nur über Umwege mehrzeilig angesprochen werden. Mit einem Listenfeld geht das ein- und auslesen einfacher.

Ich könnte es auch gleich "richtig" machen, aber dazu sollten die Tabellenblattnamen, die Anordnung etc. endgültig sein, damit ich es richtig deklarieren kann.

Wenn was ist, sag bescheid.
vg

servus bemme,

es sollte genau so sein, nur zeigt es mir momentan in deinem "vorschlag" alle "namen" an.
es sollten jedoch nur die angezeigt werden, welche >=25 sind.
nochmal genauer erklärt.
in der combobox suche ich eine provinz aus(die namen sind provinen:-)
das sind die vertikal bezeichnungen in der tabelle.
zb achae in A2. diese zeile soll durchsucht werden nach allen werten >=25.
wenn welche gefunden wurden( was 100% der fall ist), dann soll er den passenden namen aus der horizontalen (oben) und am besten noch den wert wiedergeben.
da es in jeder zeile mehrere werte >=25 gibt müssten eben mehrere namen+werte ausgegeben werden.
ich hoffe das war verständlich;-)

die tabellennamen sind ok.
die deklaratione kann ich zur not auch selbst anpassen genau wie das layout.

vielen dank bemme

gruß loga
 
Zuletzt bearbeitet:
es sollte genau so sein, nur zeigt es mir momentan in deinem "vorschlag" alle "namen" an.
es sollten jedoch nur die angezeigt werden, welche >=25 sind.

Echt?
Dann muss ich das nochmal schnell testen.
Ergänzung ()

Also, bei mir funktioniert es.

Es sind eben viele Einträge >25 dabei. Des Wegen zeigt er auch scheinbar viele an.
Ich hab die Liste mal, um die Einträge ergänzt, damit du das überprüfen bzw. sehen kannst.
 

Anhänge

Bemme90 schrieb:
Echt?
Dann muss ich das nochmal schnell testen.
Ergänzung ()

Also, bei mir funktioniert es.

Es sind eben viele Einträge >25 dabei. Des Wegen zeigt er auch scheinbar viele an.
Ich hab die Liste mal, um die Einträge ergänzt, damit du das überprüfen bzw. sehen kannst.

sorry bemme,

so sieht das bei mir aus...
vorschlag2.png
 
Naja, sieht doch gut aus. Nur Einträge dabei >=25.

Du hast im Post geschrieben:
aus der entsprechenden Zeile die werte >= 25 auszulesen

Zeige alle Einträge, die größer oder gleich 25 sind.

Oder meintest du eigentlich kleiner als?
 
meine kleiner als, hab ich aber schon hinbekommen.


eine frage noch.
wenn ich jetzt nochmal so ein listenfeld will, in dem die angegebenen werte /2 angezeigt werden.
wo muss ich das eintragen?

vielen dank...
 
Zuletzt bearbeitet:
Da gibt es mehrere Möglichkeiten:

- Listenfelder kann man auch mehrspaltig angeben. Man könnte das vorhandene einfach breiter machen und im Code angeben, dass es 2 Spalten haben soll.

- Oder ein neues Listenfeld einfügen, was die einfacher Variante wäre. Nachdem es eingefügt ist, kannst du die Funktion einfach unter den vorhanden Code einfügen.
Aus:
If Worksheets("werte").Cells(i, Spalte).Text >= 25 Then ListBox1.AddItem Worksheets("werte").Cells(i, 1).Text & " - " & Worksheets("werte").Cells(i, Spalte).Text

Wird:
If Worksheets("werte").Cells(i, Spalte).Text <= 25 Then
ListBox1.AddItem Worksheets("werte").Cells(i, 1).Text
x = (Worksheets("werte").Cells(i, Spalte).Value)/2
ListBox2.AddItem x
Else
End IF

Und füge noch oben mit ein:

Ich hab es nicht getestet, da ActiveX-Steuerelemente im OSX nicht funktionieren.
Wenn es nicht klappt, sag Bescheid, dann starte ich neu (mit Windows).
 
Zuletzt bearbeitet von einem Moderator:
haut net hin,
jetzt zeigt es mir im einen listenfeld nur noch die provinzen(namen)an
und im 2ten listenfeld die werte/2 an.(sollten keine kommazahlen sein)
wenn ich in der combobox die provinz wechsel, bleiben die alten werte stehen...
in der ersten sollte trotzdem noch name+wert stehen
genau wie in der 2ten...

xxx.png

wäre es möglich, nen eigenen "code" für das listenfeld 2 zu schreiben, da sich bei nötigen anpassungen leichter selber drin rumfummeln kann.
so wird mit nur der wert aus listenfeld 1 /2 angezeigt.
das hat einen sinn warum ich dieses listenfeld brauche.
würde es aber gerne selber anpassen können.

wird mir ja schon unangenehm...
bemme bist der beste...
 
Zuletzt bearbeitet:
Ohja, ich habe da was nicht beachtet, dass er nach einer Suchanfrage das Listfeld 2 löscht.

Ich schreibe den Code mal etwas um.

Melde mich in ca. 10 Min.

(sollten keine kommazahlen sein)
Wie soll damit umgegangen werden?

Aufrunden? Abrunden?
Er rundet momentan immer auf.

Der Code ist jetzt etwas sauberer mit Kommentaren. Vielleicht findest du dich so besser zurecht?!


wird mir ja schon unangenehm...
bemme bist der beste...

Kein Problem....ist mein Hobby, hab morgen keine Uni. Hab auch mal bei Null angefangen, wo ich noch banalere Sachen nachfragen musste im Forum. ;-)
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
aufrunden ist perfekt. wird ingametechnisch auch aufgerundet...
kommentare sind perfekt. hilft enorm.

hab noch ne excel tabelle angelgt, wo es mir aus 2 comboxen ( 2 provinzen auswählen) den schnittpunkt auswirft.
is auch nen morz dreck, das man die combobox per eigenschaften nicht mit horizontalen werten einer matrix füllen kann.
da hab ich mich durchgewuselt. aber das war mir dann zu hoch. :-(

danke für die hilfe. ist perfekt so. 1a
 
is auch nen morz dreck, das man die combobox per eigenschaften nicht mit horizontalen werten einer matrix füllen kann.
da hab ich mich durchgewuselt. aber das war mir dann zu hoch. :-(

Naja, kann man schon. Wenn man in einer Schleife einfach die Zeile einliest.
Wenn du willst, könnte ich mir das ansehen, bräuchte nur eine Vorlage und eine genauere Erklärung.
 
habs dann auch per vba hinbekommen. also es läuft wie ich es wollte.
Anhang anzeigen rechner1.rar

noch ne frage zum alten.
die sich dir erschlissenw ird wenn du dir die fertige "tabelle" anschaust.
angiff wert normal, deffen claninter wert/2, deffen clanextern wert-10, einheiten verschieben: wert-2

ich hab grad bissel an deinem vorschlag, der perfekt ist, rumgefummelt und wollte noch ein 3tes listenfeld einfügen in dem die werte -10 gerechnet werden.
hab oben Liste_wert3.Clear eingefügt.
das listenfeld natürlich auch liste_wert3 genannt ;-)

und unten im code Liste_wert3.AddItem WorksheetFunction.RoundUp((ws2.Cells(i, spalte).Value) -10)
und Liste_wert3.AddItem ((ws2.Cells(i, spalte).Value) -10 ) probiert.

und jedesmal kommt die fehlermeldung: fehler beim kompilieren. argument ist nicht opional.
und gelm markiert ist : Private Sub box_provinz_Change()

????
 
Also, die "Runden-Funktion" fällt ja weg, deswegen kannst du die 2. Variante wählen:
Liste_wert3.AddItem ws2.Cells(i, spalte).Value -10

Eigentlich sieht alles richtig aus. Ich würde nur den Code ohne "()" schreiben...siehe oben.
Leider kann ich mir das nicht angucken, da die hochgeladene Datei die Ursprungsdatei ist.
 
sry falsche datei hochgeladen.
Anhang anzeigen rechnerX2.rar

hab den teil von dir eingefügt, jetzt sieht das bei mir so aus.
xxx.png
xxxx.png

wenn ich auf entwurfsmodus klicke, zeigts mir in allen listenfeldern die werte an.
xxxx.png
 
wenn ich auf entwurfsmodus klicke, zeigts mir in allen listenfeldern die werte an.
Komisch. Kann es sein, dass das Makro vorher im "Pause-Modus" war?

Im VBA-Editor darf nur das "Play-Symbol" farbig sein und das "Entwurfs-Modus-Smbol" darf im Editor auch nicht aktiv sein.
Sonst funktioniert die Change-Methode der Combobox nicht.

Im Notfall...Datei und Excel komplett schließen und wieder neu öffnen.
 
servus,

hätte da nochmal nen problem.
ich hab nochmal was hinzugefüht.
und zwar ne 2te combobox und 2 listenfelder.
selbes spiel wie beim ersten teil, nur zeigts mir hier die provinznamen nicht an.
xxx.png
xxxx.png

hier die datei:
Anhang anzeigen Vorschlag 3b.rar
 
Zuletzt bearbeitet:
So....du hast statt einer Listbox, eine ComboBox eingefügt.
Die wird mit dem selben Befehl gefüllt. Das merkst du, wenn du auf den kleinen Pfeil am Rand der Box klickst....da sind Einträge drin.

Also, die ComboBox durch eine ListBox austauschen und dann funktioniert der Code.

Ich hab noch eine Zeile geändert:
begriff = box_provinz2.text

Der Suchbegriff soll sich ja auf die 2. Box beziehen.
 

Anhänge

im detail liegt der teufel.
1a danköö
Ergänzung ()

sers bemme,

hab noch ne idee...
hättets vielleicht lust mir nochmal zu helfen?

mfg

ps gerne auch per skype
 
Zuletzt bearbeitet:
Zurück
Oben