Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA - aus zwei Werten eine Variable machen

VBA - aus zwei Werten eine Variable machen
20.02.2007 08:44:30
andre
Hallo,
ich habe folgendes Problem:
In einer Excel-Zelle steht eine Zahl (1-50), diese Zahl möchte ich in VBA mit dem Text "Name_" zu einer Variablen zusammenfügen.
z.B. "11" und "Name_" soll zur Variable "Name_11" zusammengesetzt werden.
Wie muß ich das angehen?
Vielen Dank
Gruß Andre

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 08:58:00
Ramses
Hallo
Das geht nicht.
Variablen können nicht zur Laufzeit erstellt werden.
Gruss Rainer
AW: VBA - aus zwei Werten eine Variable machen
24.02.2007 22:41:00
Harry
Hallo Andre,
meinst Du so?
Sub Namen_ändern()
Dim lngZeile As Long
For lngZeile = 1 To 50
ActiveSheet.Cells(lngZeile, 1).Value = "Name_" & ActiveSheet.Cells(lngZeile, 1).Value
Next lngZeile
End Sub

Die Spalte mußt Du gegebenenfalls noch anpassen.
Gruß
Harry
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 09:07:00
Rudi
Hallo,
nimm eine Feldvariable.
Dim Name(1 to 50)
Name(Range("A1"))=Range("B2")
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 09:32:00
andre
Hallo Rudi,
kannst du mir das etwas genauer erklären? Was genau steht in A1 und was in B2?
Nehmen wir an, die Zahl z.B. 11 steht in A1, steht dann in B2 "Name_11"?
Gruß Andre
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 09:36:43
Rudi
Hallo,
nein. Die Variable Name(11) nimmt den Wert von B2 an.
Was willst du denn überhaupt erreichen?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 09:46:00
andre
Hallo,
ich habe hier eine fertige Anwendung (Excel/VBA), die über ein Netzwerk Daten ausliest. Ich muß etwas ändern.
Ich bekomme per Abfrage eine Integer-Zahl zurück. Diese muß ich mit dem Zusatz "Name_" zu einer Variablen zusammenfügen um anschliessend diese Variable z.B. "Name_11" erneut abzufragen.
Das heißt, der Name der Variable, die ich auslesen will, ist abhängig von dem zuvor erfragten Wert.
Gruß Andre
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 09:54:02
Erich
Hallo Andre,
vielleicht wird deutlicher, was du brauchst, wenn du die Anweisung hier hinschreibst, mit der du "erneut abfragst".
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 10:50:50
andre
Hallo,
die Anweisung sieht so aus:
Variable = Worksheets("Tabelle1").Range("C16").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("F16").Value = CInt(Answer) / 10
Variable = Worksheets("Tabelle1").Range("Name_F16").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E9").Value = Answer
In C16 steht der Name der Variable, der Integer-Wert wird in F16 eingetragen. Anschließend soll es mit "Name_" zusammengesetzt werden und das Abfrageergebnis in E9 geschrieben. Das funktioniert nur leider nicht, so wie ich es geschrieben habe.
Gruß Andre
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 11:36:00
Erich
Hallo Andre,
die Anweisung mit der erneuten Abfrage hast du in einer Funktion versteckt. So wirds also noch nicht klar.
Was macht Rt.GetValue() ?
Wenn du so etwas wie Range("Name_F16") schreibst, meint das einen mit "Name_F16" benannten Bereich.
Da dahinter .Value steht, sollte der Bereich aus nur einer Zelle bestehen.
Hast du einer Zelle (vielleicht mit Einfügen - Namen - Definieren) den Namen "Name_F16" gegeben?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 11:58:30
andre
Hallo,
ich habe "Name_F16" nur zur Verdeutlichung geschrieben. Mir geht es darum, eine Variable aus dem String "Name_" und dem Wert aus Zelle F16 zu einer zusammenzusetzen z.B. "Name_xy" um sie dann in die Abfrage einzubinden.
Variable = Worksheets("Tabelle1").Range("Name_xy").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E9").Value = Answer
Wie muß ich den String "Name_" und die Zahl aus F16 zu einer Variablen zusammenfügen?
Gruß Andre
PS. Es handelt sich um eine MS-SOAP - Verbindung, daher rührt die Funktion.
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 12:11:00
Rudi
Hallo,
du kannst noch so oft fragen! Es geht so nicht.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 12:21:55
andre
Hallo,
du kannst noch so oft fragen! Es geht so nicht.
Gruß
Rudi

Sorry, das ich vielleicht nerve, aber ich hatte das Gefühl, das Erich mir evtl. einen Lösungsansatz geben kann. Und wenn es so vielleicht nicht geht, dann geht es evtl. anders?
Gruß Andre
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 12:57:45
Rudi
Hallo,
https://www.herber.de/forum/messages/847740.html
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 12:17:27
andre
Hallo Erich,
habe noch folgendes vergessen:
Die Variable "Name_xy" befindet sich auf einem anderen Rechner in einer Anwendung und ihr Wert soll mit dieser Anweisung in die Excel-Tabelle (E9) eingetragen werden.
Variable = Worksheets("Tabelle1").Range("Name_xy").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E9").Value = Answer
Gruß Andre
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 13:07:22
Erich
Hallo Andre,
sorry, ich weiß überhaupt noch nicht, was eigentlich gehen soll!
Hat irgend jemand Zugriff auf Variablen einer anderen Anwendung?
Kennst du die Variablen in dieser Anwendung? Wohl kaum.
"Name_xy" oder was auch immer ist keine Variable, sondern ein Wert,
den du dem Funktionsaufruf Rt.GetValue() als Parameter mitgibst,
um das gewünschte Resultat zu bekommen.
Welchen Typ muss der Parameter von Rt.GetValue() haben? String, Double, Integer, ... ?
Würde msgbox Rt.GetValue(17) ein richtiges Ergebnis anzeigen? (Nach Web-Recherche scheint das so zu sein.)
Oder so etwas wie Rt.GetValue("Name_17") ?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
21.02.2007 11:19:00
andre
Hallo Erich,
ich greife per VBA auf einen anderen Rechner (Steuerung einer Maschine) zu. In der VBA-Anweisung frage ich Variablen ab, die auf dem anderen Rechner existieren, hole den Wert und trage diesen in die Excel-Tabelle ein. Nun will ich eine Variable abfragen, deren Bezeichnung von einem bestimmten Wert abhängig ist. Die Variablen werden als String zurückgegeben, die Bezeichnungen als String gesendet. Ich weiß nur nicht, wie ich den Namen der anzufragenden Variable zusammenbringen soll um sie dann in die Anweisung zu schreiben.
z.B. "NAME_" + Wert "11" = "NAME_11" (das steht in Zelle E10), dann
Variable = Worksheets("Tabelle1").Range("E10").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E9").Value = Answer
Der Rückgabewert steht dann in E9.
Gruß Andre
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
21.02.2007 11:57:44
Erich
Hallo Andre,
vermutlich ist die danze Geschichte viel einfacher als zu vermuten war. Mach mal aus
Variable = Worksheets("Tabelle1").Range("C16").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("F16").Value = CInt(Answer) / 10
Variable = Worksheets("Tabelle1").Range("Name_F16").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E9").Value = Answer
die (natürlich ungetesteten) Zeilen

With Worksheets("Tabelle1")
.Range("F16") = CInt(Rt.GetValue(CStr(.Range("C16"))) / 10)
.Range("E9") = Rt.GetValue("Name_" & .Range("F16").Value)
End With
Funzt es dann?
Steht in C16 ein String? Dann kannst du das CStr() weglassen.
Der Rückgabewert Rt.GetValue(.Range("C16").Value) ist ein String.
Ist sicher, dass er als Teichen nur Ziffern enthält, so dass er sich durch 10 teilen lässt?
Ist "Name_", also das, was vor der Zahl stehen muss, hier eine Konstante?
Zwischen VBA und der SOAP-Anwendung werden nur Strings (als Parameter und als Rückgabewert) ausgetauscht.
Ob die Parameter innerhalb der SOAP-Anwendung Namen von Variablen oder was auch immer sind,
ist in VBA völlig ohne Belang.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
22.02.2007 08:06:00
andre
Hallo Erich,
ich habe Deinen Code mal trocken in einer Excel-Tabelle getestet.
Im Prinzip würde folgende Anweisung schon das machen, was ich benötige:

With Worksheets("Tabelle1")
.Range("A1") = ("NAME_" & .Range("A2").Value)
End With

Aus A2 wird der Rückgabewert genommen, der verknüpft mit "NAME_" als neue Variable in A1 steht.
Es gibt nur noch ein kleines Problem. Der String muß so wie es hier steht auch in Anführungszeichen geschrieben werden, sonst bekomme ich von der SOAP eine Fehlermeldung. Also in A1: "NAME_21", wie binde ich das in die Anweisung ein? Sorry, bin leider totaler VBA-Laie!
Ja die Rückgabewerte sind alle Strings, darum werden die Zahlenwerte auch umgewandelt: CInt.
"NAME_" ist eine Konstante, die sich nicht ändert.
Ich werde das heute noch am Objekt testen und Dir antworten. Vorab aber schon einmal vielen Dank!
Gruß Andre
Anzeige
AW: VBA - aus zwei Werten eine Variable machen
22.02.2007 08:57:00
Erich
Hallo Andre,
schau mal den alleruntersten (älteren) Beitrag in diesem Thread an, da hatte ich so was schon mal geschrieben...
Wenn du den Parameter in Gänsefüße einwicln musst, kannst du das auf eine der folgenden Weisen tun:
With Worksheets("Tabelle1")
.Range("F16") = CInt(Rt.GetValue(Chr(34) & CStr(.Range("C16") & Chr(34))) / 10)
.Range("E9") = Rt.GetValue(Chr(34) & "Name_" & .Range("F16").Value & Chr(34))
End With
With Worksheets("Tabelle1")
.Range("A1") = Chr(34) & "NAME_" & .Range("A2") & Chr(34)
End With
With Worksheets("Tabelle1")
.Range("F16") = CInt(Rt.GetValue("""" & CStr(.Range("C16") & """")) / 10)
.Range("E9") = Rt.GetValue("""Name_" & .Range("F16").Value & """")
End With
With Worksheets("Tabelle1")
.Range("A1") = """NAME_" & .Range("A2") & """"
End With
(Ich habe das jetzt auch unterstellt für den Aufruf zum Füllen von F16.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: VBA - aus zwei Werten eine Variable machen
22.02.2007 09:19:00
andre
Hallo Erich,
ja genau so funktioniert's.
In dem besagten Thread (unten) war mir schon klar, das die Lösung im Grunde recht simpel sein müsste. Mir war mit meinem beschränkten VBA-Wissen nur nicht klar, wie ich das in die Anwendung einbinden muß.
Wenn ich das Ganze getestet habe, melde ich mich wieder.
Gruß Andre
AW: VBA - aus zwei Werten eine Variable machen
23.02.2007 08:43:59
andre
Hallo Erich,
ich habe es getestet und es funktioniert. Ich mußte die Anweisung noch etwas ändern, da ich mit dem ursprünglichen Code eine Fehlermeldung erhielt. Das ist die veränderte Anweisung, ich habe mehrere Zellen benutzt um die Werte "temporär zu speichern". Das gefällt mir zwar nicht und es gibt sicher eine elegantere Lösung aber mit meinen bescheidenen VBA-Kenntnissen war da nicht mehr drin. Schön wäre es, die Zellen E19, E20 und E21 zu sparen. Aber wie? In E19 steht der Name der Variablen, die mir den Wert für "NAME_" zurück gibt, dieser wird in E20 eingetragen, in E21 mit "NAME_" verbunden und erneut angefragt. Im Prinzip ist nur das Ergebnis in E22 von Bedeutung, das soll dann in der Excel-Tabelle ersichtlich sein.
Variable = Worksheets("Tabelle1").Range("E19").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E20").Value = CInt(Answer)
With Worksheets("Tabelle1")
.Range("E21") = """NAME_" & .Range("E20") & """"
End With
Variable = Worksheets("Tabelle1").Range("E21").Value
Answer = Rt.GetValue(Variable)
Worksheets("Tabelle1").Range("E22").Value = Answer

Ich danke Dir vielmals für Deine umfangreiche Hilfe!
Gruß Andre
AW: VBA - aus zwei Werten eine Variable machen
20.02.2007 09:47:00
Erich
Hallo Andre,
meinst du vielleicht so etwas?
Sub tst()
Dim xyz As String
' in A1 steht 27
xyz = "Name_" & Range("A1")
' Dann hat xyz jetzt den Wert "Name_27"
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

74 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige