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

Variable flexibel ansteuern

Variable flexibel ansteuern
26.06.2016 11:55:59
Robert

Hallo zusammen, bin heute das erste mal in diesem Forum und hoffe ihr könnt mir helfen.
Ich möchte eine Variable flexibel ansteuern.
Ich versuche es mal einfach zu beschreiben. Angenommen wir haben einen Code bei dem Wir per Inputbox eine Variable abfragen:


Public Var_Text1
Sub test()
Var_Test = "hallo"
Y = InputBox("bitte variable eingegen")
MsgBox (Y)
end Sub

Wenn ich in der Inputbox nun den Text Var_Test eingebe, dann steht in der MSGBOX Var_Test und nicht hallo. Nun bräuchte ich den Code wie ich es schaffe, dass in der MSGBOX hallo steht.
Hat jemand eine Idee?
Danke und Grüße,
Robert

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

Betreff
Datum
Anwender
Anzeige
AW: Variable flexibel ansteuern
26.06.2016 12:01:58
Hajo_Zi
msgbox Var_Test

Cross …
26.06.2016 12:05:58
RPP63
Du solltest wenigstens meine Antwort im Nachbarforum beachten, bevor Du Crossposting betreibst.

AW: Cross …
26.06.2016 12:19:45
Robert
Sorry Ralf, aber ich habe das Gefühl, dass ich im anderen Forum auf Grund der zu komplizierten Erklärung von mir nicht weiter komme. Deshalb habe ich gehofft, dass ich hier vielleicht einfach neu starte und mit der für mich einfachsten Erklärung eventuell eine Lösung erhalte. Im anderen Forum ist es ein Monolog zwischen uns beiden in dem wir aneinander vorbei reden.
Sorry dafür aber vielleicht hat noch jemand anders eine Idee.
Das ich mit MsgBox myVar den Wert erhalte ist mir bewusst. Ich will ja möchte aber die Flexibilität.
Wenn in die Inputbox myVar eingetragen wird dann soll in der MSGBOX der Inhalt dieser Variablen kommen.
Ich kann das machen indem ich davor eine Codezeile schreibe, aber wenn ich 200 unterschiedliche Variablen habe, dann wird das sehr mühselig:
Code: Alles auswählen
Sub RPP()
Dim myVar As String, Y As String
myVar = "Hallo"
myVar2 = "Tschüss"
Y = InputBox("Deine Variable?", , myVar)
If Y = "myVar" then y = myVar
If Y = "myVar2" then y = myVar2
MsgBox Y
End Sub

Dieser Code dient nur der Veranschaulichung und Erkläung.

Anzeige
AW: Cross …
26.06.2016 12:34:30
Daniel
Hi
ich hätte da schon eine Idee.
bevor ich dir die aber nenne, würde ich gerne wissen, welche anderen Antworten du schon bekommen hast.
du magst Crossposting gut finden, ich tue es nicht.
Wenn du, wie es hier scheint die Frage nochmal in einem anderen Forum stellst obwohl es im ersten Forum schon Antworten gab und du dort noch keine Rückmeldung gegeben hast, dann drückst du damit deine Missachtung für denjenigen aus, der dir schon geantwortet hat.
Sojemanden hilft man nicht gerne.
Gruß Daniel

AW: Cross …
26.06.2016 12:43:18
Robert
Hallo Daniel,
das verstehe ich natürlich und ich wie schon geschrieben habe, war meine Absicht nicht, dass ich die Antworten nicht wertschätze. Es ist vielmehr der Punkt, dass ich im anderen Forum einfach falsch angefangen habe und wir dadurch total falsch verstanden haben. Ich habe während des Post mehr und mehr verstanden wie ich es einfacher beschreiben kann und bin auf die Idee gekommen mit der Inputbox. Diese beschreibt meiner Meinung nach eigentlich recht gut was ich meine, da ich aber Ralf (was meine Schuld ist) total in die Irre getrieben habe mit anderen Details die einfach nicht erklären konnten was mein Problem ist, habe ich hier versucht neu zu starten. Ich habe sogar weiterhin geantwortet im alten Post und bin allen dankbar die eine Idee haben. Aktuell habe ich immer noch keine Lösung für mein Problem. Auch Ralf hat empfohlen wie schon Hajo, dass ich nicht MSGBOX Y machen soll ich sollte MSGBOX myvar versuchen. Das löst aber leider nicht mein Problem.
Hoffe ihr könnt verstehen was ich meine.
Danke und Grüße

Anzeige
AW: Cross …
26.06.2016 13:08:31
Daniel
Hi Robert
nunja, was hätte dich daran gehindert, im alten Forum nochmal einen Beitrag zu schreiben und das Problem dort besser zu erklären?
ansonsten folgende Idee:
verwende statt der vielen Variablen ein Dictionary-Objekt um die Werte unter einem Stichwort abzulegen.
Gruß Daniel

AW: Cross …
26.06.2016 13:19:37
Robert
Nur zur Info, ich habe diese Erklärung dort auch gepostet. Also es hat mich nichts daran gehindert.
Sorry aber Deinen Vorschlag verstehe ich nicht. Es ändert sich nichts daran, dass mir Y einen Text zurückliefert und ich diesen Umwandeln muss, dass Excel versteht, dass es sich bei dem Text um eine Variable oder ein Dict Object handelt.
Kann leider also nicht folgen.
Danke und Grüße,
Robert

Anzeige
AW: Cross …
26.06.2016 13:30:29
Daniel
naja, Excel und VBA gut?
hast du mal im Internet nach "Dictionary" und "Excel"gesucht?
da solltest du beispiele finden.
Ein bisschen Eigenleistung kann nicht schaden.
In welchen Foren hast du denn die Frage noch überall gestellt? Ich würde gerne auch mal die anderen Antworten die du erhalten hast lesen.
ein Codebeispiel für die Lösung mit Dictionary bekommst du nach Beantwortung meiner Fragen.
Gruß Daniel

AW: Cross …
26.06.2016 13:44:18
Robert
Ich habe letzte halbe Stunde nichts anderes gemacht als danach zu googeln und es zu lesen und es ist das gleiche Problem am Ende.
Ich habe es noch bei Officeloesungen gepostet. Nepumuk hat meine Anfrage verstanden (in diesem Forum) und hat mir eigentlich auch eine Antwort dazu gegeben. Es geht nur mit einem Klassenmodul und das macht unterm Strich nicht wirklich Übersichtlicher.
Ich verstehe ehrlichgesagt gar nicht warum diese Vorwürfe da sind. Ich habe lediglich versucht mehrere Leute zu erreichen mit meiner Frage, nachdem ich mich wohl zu komliziert ausgedrückt habe. Ein bisschen Eigenleistung kann nicht schaden finde ich da schon sehr unangebracht und aussagen wie: ein Codebeispiel für die Lösung mit Dictionary bekommst du nach Beantwortung meiner Fragen ist ja schon fast so als wenn ich mit meiner Anfrage auf der Anklagebank sitze.
Ich habe sicherlich niemanden nicht wertgeschätzt oder ähnliches lediglich nach einem festgefahrenden Forumseintrag das Forum gewechselt.
Vielen Dank für Deine Mühen und noch einen schönen Sonntag.
Grüße,
Robert

Anzeige
AW: Cross …
26.06.2016 13:50:09
Daniel
hi
ist es denn zuviel verlangt, einfach die anderen Foren hier auch noch mal zu verlinken?
klar willst du mehrere erreichen.
ich möchte aber, bevor ich antworte trotzdem gerne wisssen, ob es nicht schon ander Antworten gibt und ich meine Zeit nicht sinnvoller anderen Fragestellern widme.
Schließlich ist dir ja auch nicht geholfen, wenn du mehrfach die gleiche Antwort bekommst.
Würdest du die Frage auch dann in mehreren Foren gleichzeitig stellen, wenn du für jede Antwort etwas bezahlen müsstest?
Gruß Daniel

AW: Cross …
26.06.2016 13:59:20
Robert
Ehrlich gesagt würde ich es doppelt posten und für jede Antwort zahlen, denn ich habe ein Problem und suche Unterstützung. Ich habe es nicht gleichzeitig in 10 gepostet. Ich habe es in einem Forum gepostet wir haben uns verrannt und dann habe ich es in einem anderen noch einmal gepostet. Was ich nur schade finde sind abwertige Antworten wie: Excel und VBA gut .. na ja. Man kann das auch mit ein wenig mehr Respekt antwortetn und wenn man keine Zeit hat oder andere Fragestellungen besser findet, dann bekommmt der Fragensteller von Dir keine Antwort.
Im anderen Forum haben wir uns in einem anderen Sachverhalt verrannt. Demnach helfen die Antworten dort nicht weiter, was aber an meiner Fragestellung lag.
Aber nochmal danke das du einen Lösungsvorschlag unterbreitet hast. Leider passt dieser nicht zu meinem Problem da ich auch das Dict nicht variabel ansteuern kann mit texten.
Ich habe es mittlerweile mit Übersetzungen umgesetzt und funktioniert, wenn auch sehr unüebrsichtlich.
EInen schönen Sonntag noch.
Grüße,

Anzeige
AW: Cross …
26.06.2016 14:09:18
Daniel
warum verlinkst du nicht einfach das andere Forum, in welchem du die Frage nochmal gestellt hast?
ich wüsste jetzt nicht , warum du das Dictionary nicht variabel ansteueren kannst.
läuft im Prinzip so:
erstelle anstelle aller betroffenen Variablen ein Dictionary-Objekt und setze für jede Variable einen Eintrag in dieses Dictionary:
Dim D as Object
dim x as string
Set D = CreateObejct("Scripting.Dictionary")
D("Variable1") = "Hallo"
D("Variable2") = "Welt"
x = Inputbox("Variablenname eingeben")
If D.Exist(x) then
Msgbox "Variable " & x & " hat den Wert " & D(x)
Else
Msgbox "Variable " & x & " nicht vorhanden"
End If

Gruß Daniel

Anzeige
AW: Cross …
26.06.2016 18:07:39
Robert
Hallo Daniel,
nochmals danke. Deine Antwort habe ich gerade auch Michael beantwortet. Wollte DIr nur noch mal danke sagen und leider hilft mir Deine Lösung nicht weiter. Vielleicht erklärt meine Beispieldatei was ich meine:
https://www.herber.de/bbs/user/106547.xlsm
Nur zur Info und nochmal danke.
Grüße,
Robert
PS: Den anderen Eintrag hast du ja mittlerweile gefunden ;)

AW: Cross …
26.06.2016 20:40:47
Daniel
so habe ich den andren Eintrag gefunden?
dann stellst sich für mich aber die Frage, warum du dich hier "Robert" und im anderen Forum "Fabian" nennst.
Entschuldige bitte meine Neugier, aber aber das interessiert mich mehr als dein Problem.
was ist denn jetzt dein richtiger Name und warum tritts du in den Foren mit unterschiedlichen Namen auf?
Gruß Daniel

Anzeige
AW: Cross …
26.06.2016 20:53:46
Robert
Doppelname aber das ist mit Abstand das wichtigste da hast du vollkommen recht. Entschuldige bitte.
Wusste nicht das dies ein Forum zur Identitätsfestellung ist. Dachte echt es geht um VBA.
Aber schick mir doch einfach Deine Adresse dann schicke ich Dir eine Kopie meines Ausweises, damit wir dieses Problem auch gelöst hätten.
Muss echt sagen, dass diejenigen die sich echt um das VBA kümmern und nicht um alles drumherrum echt gut sind in dem Forum und andere haben sich richtig eingedacht. Wiederum andere machen sich mehr Gedanken welchen der Vornamen man verwendet.
Echt super traurig, entschudlige bitte, dass ich hier nicht mehr antworten werde, denn ich verbringe meine Zeit lieber mit denjenigen, welche mir wirklich helfen wollen und nicht nur auf Kravall aus sind.
Grüße und noch mal vielen Dank, dass du anfänglich versucht hast im Rahmen Deiner Möglichkeiten zu ünterstützen.
Grüße,
Fabian Robert

Anzeige
AW: Cross …
26.06.2016 21:20:58
Daniel
nun du übersiehst, dass ich dir das Dictionary-Objekt schon als Lösung vorgeschlagen habe, sogar mit Codebeispiel...
also an mir liegts nicht.
trotzedem stellt sich die Frage, warum du in den Foren mit unterschiedlichen Namen auftrittst.
Gruß Daniel

AW: Cross …
26.06.2016 12:39:29
Nepumuk
Hallo,
das geht nur über eine Klasse:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub Test()
    Dim objParam As clsParam
    Dim strReturn As String
    Set objParam = New clsParam
    objParam.Test1 = "Hallo"
    objParam.Test2 = "Tschüss"
    strReturn = InputBox("Variable", "Eingabe", "Test1")
    Call MsgBox(CallByName(objParam, strReturn, VbGet))
    strReturn = InputBox("Variable", "Eingabe", "Test2")
    Call MsgBox(CallByName(objParam, strReturn, VbGet))
    Set objParam = Nothing
End Sub

' **********************************************************************
' Modul: clsParam Typ: Klassenmodul
' **********************************************************************

Option Explicit

Private mstrTest1 As String
Private mstrTest2 As String

Public Property Get Test1() As String
    Test1 = mstrTest1
End Property

Friend Property Let Test1(ByVal pvstrTest1 As String)
    mstrTest1 = pvstrTest1
End Property

Public Property Get Test2() As String
    Test2 = mstrTest2
End Property

Friend Property Let Test2(ByVal pvstrTest2 As String)
    mstrTest2 = pvstrTest2
End Property

Gruß
Nepumuk

Anzeige
AW: Cross …
26.06.2016 12:56:59
Robert
Hallo Nepumuk,
das klingt hervoragend. Leider bekomme ich einen Fehler beim kompilieren für clsParam. Muss ich noch einen bestimmten Verweis aktiviereren?
Danke für Deine Unterstützung!
Grüße

AW: Cross …
26.06.2016 13:01:00
Nepumuk
Hallo,
du musst ein Klassenmodul mit diesem Namen anlegen.
Gruß
Nepumuk

AW: Cross …
26.06.2016 13:14:54
Robert
Sorry ich bin ein Depp natürlich.
Ich denke aber, dass Dein Code mir nicht wirklich weiter hilft. Ich müsste wenn ich es richtig verstehe noch mehr schreiben und abfangen.
Um in meinem Beispiel zu bleiben könnte ich ja einfach den Inhalt übersetzen:
Sub RPP()
Dim myVar As String, Y As String
myVar = "Hallo"
myVar2 = "Tschüss"
Y = InputBox("Deine Variable?", , myVar)
If Y = "myVar" then y = myVar 'Übersetzung
If Y = "myVar2" then y = myVar2 'Übersetzung
MsgBox Y
End Sub
Aber wenn du sagst, dass es nur so geht mit der Klasse, dann verstehe ich, dass es wohl überhaupt nicht möglich ist. dann brauche ich auch nicht weiter suchen und "Übersetze" einfach alles.
Danke !

Div. Möglichkeiten
26.06.2016 16:10:37
Michael
Hi zusammen,
anbei Datei mit mehreren Möglichkeiten...
Der Punkt ist, daß die Eingabe einer Vielzahl von Variablen/Werte-Paaren immer grätzig ist.
Dazu bietet es sich an, zumindest während der Entwicklung, ein Tabellenblatt vorzuhalten, in dem diese Werte-Zuordnungen erfaßt werden.
Das Makro zur Zuordnung ist höchst einfach:
Option Explicit
Sub FindVar()
' in Tabelle1 (FindVar) ********
Dim c As Range
Dim varSuch$
Dim Y
varSuch = Range("E2").Text
If varSuch = "" Then Exit Sub
Set c = Range("B:B").Find(varSuch, , xlValues, xlWhole, , , True)
If Not c Is Nothing Then
Y = c.Offset(, 1)
Else
Y = varSuch & " nicht gefunden."
End If
MsgBox Y
End Sub
Im zweiten Blatt finden sich zwei Formelblöcke, um direkt VBA-Code für Arrays bzw. ein Dictionary zu erzeugen.
Die Makros zum Finden sehen denn so aus:
Option Explicit
'in Tabelle2 (ArrayVar) *********
Sub ArrayVar()
Dim myVar$(), myInhalt(), myNr
Dim Y
ReDim myVar(1 To 12): ReDim myInhalt(1 To 12)
myVar(1) = "collBeg": myInhalt(1) = "Hi"
myVar(2) = "collAb": myInhalt(2) = "Ciao"
myVar(3) = "Aus_Ab": myInhalt(3) = "Baba"
myVar(4) = "NordBeg": myInhalt(4) = "Moin, moin"
myVar(5) = "Aus_Beg": myInhalt(5) = "Servus"
myVar(6) = "CH_Ab": myInhalt(6) = "Max Frisch"
myVar(7) = "US_Beg": myInhalt(7) = "Hi"
myVar(8) = "EN_Beg": myInhalt(8) = "Hello"
myVar(9) = "US_Ab": myInhalt(9) = "take care"
myVar(10) = "EN_Ab": myInhalt(10) = "Bye"
myVar(11) = "BayBeg": myInhalt(11) = "Grüß Gott"
myVar(12) = "BayAb": myInhalt(12) = "Pfiadi"
Y = InputBox("Deine Variable?", , myVar(1))
myNr = Application.Match(Y, myVar, 0)
If Not IsError(myNr) Then
If myVar(myNr) = Y Then
Y = myInhalt(myNr)
Else
Y = myVar(myNr) & " <> " & Y
End If
Else
Y = Y & "abgebrochen oder nicht gefunden."
End If
MsgBox Y
End Sub
Sub DicVar()
Dim D As Object
Dim Y As Variant
Set D = CreateObject("Scripting.Dictionary")
D("collBeg") = "Hi"
D("collAb") = "Ciao"
D("Aus_Ab") = "Baba"
D("NordBeg") = "Moin, moin"
D("Aus_Beg") = "Servus"
D("CH_Ab") = "Max Frisch"
D("US_Beg") = "Hi"
D("EN_Beg") = "Hello"
D("US_Ab") = "take care"
D("EN_Ab") = "Bye"
D("BayBeg") = "Grüß Gott"
D("BayAb") = "Pfiadi"
Y = InputBox("Deine Variable?", , "collBeg")
If Not IsError(Y) Then
If D.exists(Y) Then
Y = D(Y)
Else
Y = Y & " nicht gefunden."
End If
Else
Y = "abgebrochen"
End If
MsgBox Y
End Sub
Datei zum Testen: https://www.herber.de/bbs/user/106543.xlsm
Der mittlere Codeschnipsel hat den Nachteil, daß Groß- und Kleinschreibung NICHT berücksichtigt wird; entweder man verwendet strikt unterschiedliche Variablennamen, z.B. mit Nummern Var1, Var2 usw. oder läßt die Finger von dieser Variante.
Schöne Grüße,
Michael
P.S.: Falls das die Sache immer noch nicht trifft, wäre ne Beispieldatei mit Deinen KONKRETEN Variablennamen nicht verkehrt.

AW: Div. Möglichkeiten
26.06.2016 18:05:17
Robert
Hallo Michael,
vielen Dank für Deine Mühen.
ICh habe jetzt mal alles so aufgebaut damit man etwas besser verstehen kann worauf ich hinaus möchte.
Habe gehofft, mit meinem einfachen Beispiel mit der Inputbox die komplexität aus dem ganzen zu nehmen. Hat leider nicht funktioniert. In der Datei kannst du hoffentlich erkennen, dass ich mir mit deinem Vorschlag keine Übersichtlichkeit gewinne. Es ist aber sicherlich eine andere Art der Umsetzung meines "Problems". Ich habe gehofft, dass es eine einfache Möglichkeit gibt mit einer Codezeile 1000 Zeilen zu sparen. Scheint aber leider nicht so...
Dennoch vielleicht lag es ja doch an meiner Erklärung:
https://www.herber.de/bbs/user/106547.xlsm
Danke und Grüße,
Robert

AW: Div. Möglichkeiten
26.06.2016 19:09:27
Michael
Hi Robert,
die Frage ist doch, wie der Import von SAP aussieht, sprich die "rechte Seite" Deiner Zuweisungen:
 var_PLZ = "12345"
var_Strasse = "SAP Strasse"
var_Ort = "SAP Ort"
var_Name = "SAP User"

Liefert SAP ein Array oder wie oder was?
So á la
 var_Strasse = sap(1)
Sag mir, wie die "rechte Seite" aussieht, und ich sage Dir, was zu tun ist.
Gruß,
M.

Nachtrag
26.06.2016 19:51:37
Michael
So wird es vielleicht klarer:
Option Explicit
Public olSubject As String
Public olBody As String
Sub Testversion()
Dim D As Object, d_key As Variant
Dim pLi&, pRe&
Dim such$, wert$ ' $ ist as string
Dim ende As Boolean
Set D = CreateObject("scripting.dictionary")
'vorher läuft ein Code komplett durch das SAP und sich die Informationen zusammen
' Du suchst Dir die Variablennamen ja selbst aus;
' ob sie nun var_Ort oder D("Ort") heißt, kannst Du SELBST festlegen...
D("PLZ") = "12345"
D("Str") = "SAP Strasse"
D("Ort") = "SAP Ort"
D("Name") = "SAP User"
olSubject = "Neue Email an " & D("Name")
olBody = Sheets("explain").Range("b4")
pLi = 0
Do
pLi = InStr(pLi + 1, olBody, "[")
If pLi = 0 Then
ende = True
Else
pRe = InStr(pLi, olBody, "]")
If pRe <> 0 Then
such = Mid(olBody, pLi + 1, pRe - pLi - 1)
MsgBox such
If D.exists(such) Then
wert = D(such)
Else
wert = "[** n.v. **]"
End If
olBody = Replace(olBody, "[" & such & "]", wert)
Else
ende = True
End If
End If
Loop Until ende
MsgBox olSubject
MsgBox olBody
''' Anstatt MsgBoxen dann "drüben" einfach die Zuweisungen:
' With myOLItem
' .To = "ich@ich.de"
' .Subject = olSubject
' 'Diese Zeile ist natürlich nur zur manipulation, da eigentlich eine Vorlage,
' 'geöffnet werden soll wo diese Felder in Texten enthalten sind
' .HTMLBody = olBody
' Call Mailöffnen
End Sub

AW: Nachtrag
26.06.2016 21:00:53
Robert
Echt Mega Michael,
damit wäre ein Weg gefunden. Unterm Strich ist aber natürlich das Hauptanliegen die Übersichtlichkeit und ich glaube fast, dass jede einzelne Variable zu callen übersichtlicher ist.
Oder gibt es weitere Vorteile an Deinem Weg die ich vielleicht akutell nicht erkenne.
Ich kann auf jeden Fall sagen, dass ich dadurch einiges gelernt habe und muss echt danke sagen!
Grüße,
Robert

Übersichtlichkeit?
27.06.2016 13:37:40
Michael
Hi Robert,
tja, da ist die Frage, was man unter Übersichtlichkeit versteht.
Meiner Meinung nach ist es umso übersichtlicher, je kürzer der Code ist. Und kurz ist er durch den Einsatz von Schleifen, auch wenn es mitunter ein ziemliches Gepfriemel ist, bis paar verschachtelte Ifs exakt das tun, was sie sollen.
Aber wenn es mal steht, dann rennt's.
Warum mein obiger Vorschlag "gut" ist? Dictionaries sind sauschnell, und zwar deutlich schneller als das Durchlaufen eines Arrays (oder, wie es Dir vorschwebt, 200 Vergleiche nacheinander). Ein Dic ist mit dem Index einer Datenbank vergleichbar: gesucht wird im "Index", nicht in den Daten, und zwar nicht sequentiell, sondern anhand eines Entscheidungsbaumes.
Du bist mir die Antwort schuldig geblieben, wie so eine SAP-Ausgabe aussieht.
Wenn es kein Array ist, wird es ein String sein, so á la
SAP-RiesenString="[Ort]"SAP-Ort",[Name]"SAP-Name"" oder so was.
WENN das so ist, läßt sich das Dictionary mit einer kaum geänderten Schleife wie der Do..Loop bestücken, mit der ich die Variablen in olBody durch die Werte ersetze.
Dann hast Du nämlich 30 Zeilen Code statt 2x200, und das ist einfacher zu warten.
Also nochmal: sag mir, was "rechts" steht, und ich sage Dir...
Schöne Grüße,
Michael

Im Prinzip geht das, was du (ursprgl) willst ...
27.06.2016 03:02:29
Luc:-?
…recht einfach mit einem KlassenModul, Robert Fabian,
wobei es kein neues sein muss, sondern auch ein bereits bestehendes sein kann. Du kannst dann mit der 3.Art eines Aufrufs arbeiten, die in VBA mit einer Fkt/Methode realisiert wird → CallByName. Das hatte schon Nepumuk verwendet. Dabei muss die GlobalVariable in einem KlassenModul deklariert wdn, zB auch in einem Dokument-KlassenModul wie dem des Blattes, damit sie einem Parent-Objekt zugeordnet wdn kann, denn darum geht's hierbei letztlich.
Im Modul der Tabelle1 deklarieren: Public Var_Test
In normalem Modul dann Folgendes schreiben:
Sub testVar()
Const defVarName$ = "Var_Test"
Dim Y$
Sheets("Tabelle1").Var_Test = "Hallo Welt!"
Y = InputBox("Bitte Variable eingeben!", "VarEingabe", defVarName)
MsgBox CallByName(Sheets("Tabelle1"), Y, VbGet)
End Sub
Das 1.Argument von CallByName muss immer das ElternObjekt enthalten, hier halt das genannte Blatt. Das Objekt kann auch über den internen CodeName angesprochen wdn, hier Tabelle1.Var_Test, was den Vorteil hat, dass der VBE-Intellisense auch die Global­Variablen dieses Blattes anzeigt, wenn man nach dem Namen einen Pkt setzt. In diesen Fällen sollte man die CodeNamen aber ändern, damit sie eindeutig sind und der Mappe (deren CodeName ebenfalls geändert wdn sollte) optisch zugeordnet wdn können (per Pkt geht das nicht, weil die CodeNamen völlig eigenständige Objekte ohne angebbaren Elternteil bezeichnen).
Ob und inwieweit du das in dein Pgm integrieren kannst, musst du selbst entscheiden, denn ich betrachte meinen BT nur als Ergänzung zu dem, was Nepumuk dir geantwortet hat. Habe keine Zeit, mich mit deinem GesamtPgm zu befassen.
Morrn, Luc :-?
Besser informiert mit …

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige