Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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

Makro zuordnen mit Parametern

Makro zuordnen mit Parametern
knickebein
Hallo,
Ich möchte innerhalb einer Prozedur die Inhalte einer Liste/Matrix verarbeiten. Die Größe dieser Liste/Matrix hängt aber davon ab, wieviel der User mittlerweile eingetragen hat. Daher möchte ich die Matrixkoordinaten beim Aufruf als Parameter übergeben.
Beim Zuordnen eines Makros zu einem Button ist dies aber weder dynamisch noch durch Verwendung eines definierten Namens möglich, da parametrisierte Prozeduren gar nicht zur Wahl gestellt werden.
Gibt es irgendeine Möglichkeit? Danke.
Gruß
knickebein
AW: Makro zuordnen mit Parametern
28.07.2009 11:16:03
{Boris}
Hi Knickebein,
kryptisch drückt er sich aus.
Ruf doch per Button eine ganz normale Sub auf und übergib dabei die notwendigen Parameter.
Grüße Boris
AW: Makro zuordnen mit Parametern
28.07.2009 11:27:40
knickebein
Hallo,
exakt das würde ich gern. Einzig ich weiß nicht wie, da ich parametrierte Prozeduren Buttons nicht zuweisen kann. Oder übersehe ich hier irgendetwas?
Gruß
knickebein
AW: Makro zuordnen mit Parametern
28.07.2009 11:16:45
MichaV
Lass doch das Makro die Anzahl der Einträge ermitteln. Die Erste Zelle kennst Du ja, die letzte Zelle bekommst Du mit der Foren- Suche heraus oder wenn Du in Excel bei xlDown nachschlägst.
Gruß- Micha
AW: Makro zuordnen mit Parametern
28.07.2009 11:20:51
Tino
Hallo,
bin mir nicht sicher ob Du sowas meinst.
Schau auch in der Hilfe unter ParamArray.
Sub Beispiel(ParamArray varWerte())
Dim strString As String

strString = Join(varWerte, vbLf)

MsgBox "Es wurden " & Ubound(varWerte) + 1 & " Werte übergeben" & _
        vbLf & vbLf & strString

End Sub

Sub Test()
 Call Beispiel("Wert1", "Wert2", "Wert3", "usw...")
End Sub
Gruß Tino
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 11:25:52
knickebein
Sorry, war wohl etwas missverständlich.
Die Prozedur ist eine Prozedur, die eine Range als Parameter erwartet:
Sub test(X As Range)
End Sub
Diese Prozedur möchte ich nun mittels Button aufrufen. Dem Button weise ich zu diesem Zweck normalerweise (per Kontextmenü "Makro zuweisen") ein Makro zu. Das besagte MAkro kann ich hier aber nicht auswählen, da mir Makros mit Parametern nicht angezeigt werden. Offenbar kann ich auf diese Weise keine Parameter übergeben, oder?
Die Übergabe im Rahmen eines Aufrufes innerhalb von vba (Call test(...)) ist keine Alternative, da die als Parameter übergebene Range ja dynamisch ist.
Gruß
knickebein
Anzeige
verstehe Dein Problem nicht...
28.07.2009 11:35:55
Tino
Hallo,
"Die Übergabe im Rahmen eines Aufrufes innerhalb von vba (Call test(...)) ist keine Alternative"
Was ist daran so schlimm? Verstehe ich nicht!
Frage offen!
Gruß Tino
AW: verstehe Dein Problem nicht...
28.07.2009 11:50:14
knickebein
Hallo,
wie ich in einer anderen Antwort geschrieben habe, kann ich den fraglichen Bereich in vba nur schlecht ermitteln (nur anhand von davor/dahinter stehenden Schlüsselwörtern, da dieser sich inmitten anderer gefüllter Zellen befindet). Wünschenswert wäre daher die Definition eines Namens, dessen BEreich sich bei Einfügen von Zeilen/Spalten automatisch vergrößert.
Gruß
knickebein
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 11:36:58
{Boris}
Hi,
Sub Schaltfläche1_BeiKlick()
Dim var1, var2
'Hier kannst Du var1 und var2 noch dynamisch befüllen,
'danach rufst Du Deine Prozedur auf und übergibst dabei die Parameter
Call Deine_Sub(var1, var2)
End Sub
Grüße Boris
AW: Makro zuordnen mit Parametern
28.07.2009 11:45:13
knickebein
Danke - zugegeben, so könnte man es machen. Nur die dynamische Befüllung innerhalb der Prozedur macht mich nicht ganz glücklich.
Grund hierfür ist, dass der dynamisch (durch Einfügen von Zeilen und Spalten durch den Benutzer) vergrößerte Bereich "mitten drin" zwischen ausgefüllten Zellen steht, d.h. ich kann nicht die Range von A1 bis "Ende des ausgefüllten Bereiches" verwenden, sondern ich müsste anhand von Schlüsselwörtern oder Eigenschaften der ausgefüllten Zellen versuchen zu erkennen, ob es sich noch eine usergefüllte Zelle handelt oder nicht.
Dies wollte ich eigentlich umgehen, in dem ich den usergefüllten Bereich als Namen definiere und diesen als Parameter an die Prozedur übergebe. Der Bereich dieses Namens wird ja beim Einfügen von Zeilen oder Spalten automatisch erweitert.
Noch eine Idee?
knickebein
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 11:50:07
Tino
Hallo,
wenn Dein Bereich einen Namen hat, kannst Du ihn so übergeben.
Sub Beispiel(rZelle As Range)
MsgBox rZelle.Address(0, 0)
End Sub
Sub Schaltfläche1_KlickenSieAuf()
Call Beispiel(Range("BereichName"))
End Sub
Gruß Tino
AW: Makro zuordnen mit Parametern
28.07.2009 11:53:17
knickebein
Hi Tino,
das ist vermutlich die beste Lösung, danke!
Wünschenswert wäre natürlich trotzdem, dass man den Namen als Parameter übergeben könnte. Dann könnte man den vba-Code komplett von konkreten Adressen, Namen, Inhalten etc. entkoppeln...
Gruß
knickebein
AW: Makro zuordnen mit Parametern
28.07.2009 12:03:41
Tino
Hallo,
"Wünschenswert wäre natürlich trotzdem, dass man den Namen als Parameter übergeben könnte"
Übergib den Namen als String.
Sub Beispiel(strName As String)
MsgBox Range(strName).Address(0, 0)
End Sub
Sub Schaltfläche1_KlickenSieAuf()
Call Beispiel("BereichName")
End Sub
Gruß Tino
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 12:12:16
knickebein
Sorry, wieder mein Fehler.
Ich meinte die Übergabe "aus Excel nach vba". Für mich sind das immer quasi zwei Welten. In Excel werden Formeln idR dynamisch an Erweiterungen, Verkeinerungen, Verschiebungen etc. angepasst. Dies gilt natürlich nicht für den vba-Code. Daher würde ich gern alle relevanten Informationen per Parameter von Excel nach vba übergeben.
Und dies schließt auch ein, dass ich den in Excel definierten Namen eigentlich ungern in vba "fest verdrahten", sondern eben beim Makroaufruf als Parameter übergeben würde.
Aber was nicht ist, ist nicht.
Trotzdem vielen Dank!
knickebein
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 13:18:11
{Boris}
Hi Knickebein,
Und dies schließt auch ein, dass ich den in Excel definierten Namen eigentlich ungern in vba "fest verdrahten", sondern eben beim Makroaufruf als Parameter übergeben würde.
Sorry - aber ich hab das Gefühl, Du stehst Dir grad selbst im Weg.
Das hier
Call Beispiel("BereichName")
ist doch eine Übergabe des Namens als String. Und der Bereich verhält sich ja schon über den Namen selbst dynamisch.
Wenn Du es noch dynamischer haben möchtest, dann schreibe denn Namen in eine Zelle und übergib dann den Zellwert. Dann kannst Du verschiedene Namen über Änderung des Zellinhaltes ansteuern.
Wie gesagt - Du denkst wahrscheinlich viel zu kompliziert.
Grüße Boris
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 14:51:54
knickebein
Hi Boris,
wenn ich einen String verwende und diesen in vba fest verdrahte, läuft vba ins Leere, wenn der Name geändert wird (oder ich die Prozedur in ein anderes Workbook übernehme und der Name dort nicht definiert ist).
Schreibe ich den Namen in eine Zelle, muss ich diese in vba fest verdrahten. Wird sie (von mir oder sonstwem) verschoben, läuft vba ebenfalls ins Leere.
Universell und sauber wäre für mich einzig, wenn ich den Namen als Parameter beim Aufruf durch einen Button direkt übergeben könnte. So wäre die Prozedur unabhängig von ihrem Excel-Umfeld.
Aber ich bin halt auch Perfektionist... Und ich bin begeistert von euren Bemühungen, mich auf "den richtigen Pfad" zu bringen. Danke!
Gruß
knickebein
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 15:00:15
MichaV
Nö, nicht im Nirvana, Du hast nicht F5 gedrückt.
Selbst wenn Du einen Parameter an die Funktion aus Excel heraus übergeben könntest, müsstest Du den doch irgendwo hinschreiben?! Und damit wäre er "verdrahtet".
Gruß- Micha
AW: Makro zuordnen mit Parametern
28.07.2009 14:54:37
knickebein
[komisch, ich konnte die Antwort nicht mehr unten in den Baum hängen - ist kommentarlos ins Nirvana gegangen...]
Hi Boris,
wenn ich einen String verwende und diesen in vba fest verdrahte, läuft vba ins Leere, wenn der Name geändert wird (oder ich die Prozedur in ein anderes Workbook übernehme und der Name dort nicht definiert ist).
Schreibe ich den Namen in eine Zelle, muss ich diese in vba fest verdrahten. Wird sie (von mir oder sonstwem) verschoben, läuft vba ebenfalls ins Leere.
Universell und sauber wäre für mich einzig, wenn ich den Namen als Parameter beim Aufruf durch einen Button direkt übergeben könnte. So wäre die Prozedur unabhängig von ihrem Excel-Umfeld.
Aber ich bin halt auch Perfektionist... Und ich bin begeistert von euren Bemühungen, mich auf "den richtigen Pfad" zu bringen. Danke!
Gruß
knickebein
Anzeige
AW: Makro zuordnen mit Parametern
28.07.2009 21:49:57
Hübi
Hi,
"...wenn ich einen String verwende und diesen in vba fest verdrahte, läuft vba ins Leere, wenn der Name geändert wird (oder ich die Prozedur in ein anderes Workbook übernehme und der Name dort nicht definiert ist)...."
Das, lieber Perfektionist, kann man mit einer Fehlerbehandlung abfangen.
Wenn du nichts hart verdrahten willst, musst du halt beim Aufruf die Parameter ermitteln und dann übergeben. Ob das im Einzelnen immer möglich ist, ist aus der Ferne nicht zu beurteilen.
mfg Hübi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige