Avatar billede marcus25 Nybegynder
18. august 2005 - 16:42 Der er 15 kommentarer og
1 løsning

Hent værdi af variabel med forskellige navne

Er der nogen der ved hvordan man får nedenstående til at virke, så funktionen returnerer indholdet af variablen StrPosition.

Public Function test()

Dim strPosition As String
strPosition = "HEJ"

Dim a, b, c As String
a = "Position"
b = "str" & a
c = a + b

MsgBox c
' her får jeg svaret StrPosition men ville have "HEJ"

End Function
Avatar billede mugs Novice
18. august 2005 - 16:46 #1
Public Function test()
Dim strPosition As String
strPosition = "HEJ"
Dim a, b, c As String
a = "Position"
b = "str" & a
c = a + b
MsgBox a & StrPosition
End Function
Avatar billede mugs Novice
18. august 2005 - 16:47 #2
Hvis du vil have mellemrum mellem variablerne, skal din MSGBOX se således ud.

MsgBox a & " " & strPosition
Avatar billede marcus25 Nybegynder
18. august 2005 - 16:57 #3
Så nemt er det desværre ikke!

Problemet er at jeg ikke må bruge variablen "strPosition" i min kode, da den næste gang hedder noget andet. Jeg skal derfor selv danne variablens navn vha. a + b, og derefter hent værdien af variablen.
Avatar billede mugs Novice
18. august 2005 - 17:05 #4
Dim a, b, c As String
a = InputBox(Prompt:="Indtast værdien af variablen:", Title:="Variablen a", Default:="")
b = InputBox(Prompt:="Indtast værdien af variablen:", Title:="Variablen c", Default:="")
MsgBox a & " " & b
Avatar billede marcus25 Nybegynder
18. august 2005 - 17:35 #5
Det vil heller ikke hjælpe...problemet er:

Ved første kald hedder variablen StrPosition og indholdet er "Æbler"

Dit forslag betyder at variabel a = Str og Variabel b = position
hvorefter msgbox giver "Str position" og ikke Æbler!
Avatar billede mugs Novice
18. august 2005 - 17:38 #6
Så forstår jeg ikke hvad du mener.
Avatar billede overchord Nybegynder
18. august 2005 - 17:54 #7
ok som jeg forstaar de vil du kombinere dig frem til at variabel-navn som saa hentes.
Det kommer ikke til at virke idet a, b, og c jo er strings og derfor paa ingen maader peger paa en variabel.
Det er kun muligt at forestage saadanne operationer hvis du migrerer til c# f.eks

Men siden du jo allerede benytter en funktion, hvorfor saa ikke bare benytte en generisk funtion:

Public Function test(MyString as String)

msgbox Mystring

End function

Den kan du jo kalde med enhver taenkelig string variable.
Avatar billede marcus25 Nybegynder
18. august 2005 - 17:55 #8
Hmmmm....jeg forsøger med en ny forklaring:

Jeg har variablens navn i en tekststreng, men mangler en kommando der kan hentet indholdet af denne variabel....!
Avatar billede overchord Nybegynder
18. august 2005 - 17:59 #9
Ja men det kan du ikke!
En streng er en variabel som indeholder tekst - ikke navnet paa en anden variabel.
Avatar billede marcus25 Nybegynder
18. august 2005 - 18:00 #10
Hej overhord
Dit svar krydsede min sidste kommentar. Jeg forstår dit svar således at der slet ikke er denne mulighed i VBA....ØV, men den må jeg vel æde. Men OK, hvis du sender den som svar får du de tildelte point.
Avatar billede overchord Nybegynder
18. august 2005 - 18:04 #11
Ja nogle gange kunne det selv vaere praktisk, men det ville ogsaa vaere en ret suikker funktion af have. Som sagt kan det lade sig goere hvis man migerer til .Net og c#, men det er bestemt ikke en ligefrem procedure. Det bedste er nok at lave en funktion du kan kalde med alle dine forskellige variable - hovedpinen er selv saa at de skal "hardcodes" et eller andet sted.
Avatar billede terry Ekspert
18. august 2005 - 19:01 #12
Not 100% sure what it is you are trying to do, but a function can return a string

Public Function ReturnSomeString() as string

Dim SomeString as String

  SomeString = "SomeString"


End function
Avatar billede terry Ekspert
18. august 2005 - 19:02 #13
Oops, wasnt finished there!

Public Function ReturnSomeString() as string

Dim SomeString as String

  SomeString = "SomeString"

  ReturnSomeString = SomeString

End function
Avatar billede terry Ekspert
18. august 2005 - 19:06 #14
and just a point. The following line doesnt declare a, b and c as string's! Only c will be a string, a and b will be variant

Dim a, b, c As String
Avatar billede ricky Nybegynder
19. august 2005 - 10:09 #15
Er det mig der misforstår ? eller er det så simpelt:

Dim ctl As Control
Set ctl = variabel
Avatar billede overchord Nybegynder
19. august 2005 - 10:26 #16
terry - the point was that marcus25 was trying to combine two strings into a variable name, and then call that variable (not the string).
That is as far as I know not possible at all in VBA (or mnay other languages for that matter) :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester