Hallo,
kann mir jemand sagen warum folgendes funktioniert:
ActiveSheet.Hyperlinks.Add Anchor:=Cells(2 + anzahl, 1), Address:="", SubAddress:="" & data.Fields.Item("Abflughafen"), TextToDisplay:="" & data.Fields.Item("Abflughafen")
aber folgendes nicht:
ActiveSheet.Hyperlinks.Add Anchor:=Cells(2 + anzahl, 1), Address:="", SubAddress:=data.Fields.Item("Abflughafen"), TextToDisplay:= data.Fields.Item("Abflughafen")
Gruß
Hi,
was steht in ‚data.Fields.Item(„Abflughafen“)‘ ?
Ich rate mal, eine Zahl.
Das sieht ganz so aus, als würde VBA den Datentyp interpretieren.
Durch „“ & data.Fields.Item(„Abflughafen“) ist der Datentyp durch „“ auf String festgelegt. Folgt danach eine Zahl, wird die in einen String umgewandelt. Sonst scheinbar nicht.
Wenn ich richtig geraten habe, kannst Du statt …
„“ & data.Fields.Item(„Abflughafen“)
… auch schreiben …
CStr(data.Fields.Item(„Abflughafen“))
… und es funktioniert wieder.
Habe ich richtig geraten? 
Gruß Rainer
ne sorry wusste nicht das der Datentyp wichtig ist 
data wird als New ADODB.Recordset definiert
data.Fields.Item(„Abflughafen“) ist immer ein String von 3 Stellen.
Gruß
data wird als New ADODB.Recordset definiert
an dieser Stelle gibt es zwischen den VB Sprachen scheinbar Unterschiede.
in VB6 würde ich dann schreiben:
data(„Abflughafen“)
data.Fields.Item(„Abflughafen“) ist immer ein String von 3
Stellen.
dazu habe ich in VB6 mal ein Testprogramm gebaut:
Option Explicit
Private Sub Command1\_Click()
Dim txt As Variant
Dim erg1 As Variant
Dim erg2 As Variant
Dim i As Integer
txt = 123
erg1 = txt
erg2 = "" & txt
For i = 1 To Len(erg1)
List1.AddItem Asc(Mid(erg1, i, 1))
Next
List1.AddItem "--"
For i = 1 To Len(erg2)
List1.AddItem Asc(Mid(erg2, i, 1))
Next
End Sub
Weil ich alles als variant deklariert habe, steht in erg1 zunächste eine Zahl. Mit der schleife greife ich darauf zu, als wäre es ein String und obwohl ich vorher so viel wie möglich falsch gemacht habe, sind die beider Ergebnisse gleich. In der Liste steht am Ende:
49
50
51
49
50
51
Einen Unterschied zwischen:
x = data.Fields.Item(„Abflughafen“)
und
x = „“ & data.Fields.Item(„Abflughafen“)
kann ich nicht finden.
Mein letzter Schuss ins Blaue, füge mal überall vor und nach den Gleichheitszeichen und den „&“ Leerzeichen ein. VB könnte ohne die Leerzeichen etwas falsch interpretieren.
Gruß Rainer
1 „Gefällt mir“
Alles klar, Scrollbalken fehlt bei mir owT
data.Fields.Item(„Abflughafen“) ist immer ein String von 3
Stellen.
Hallo Philip,
woher weißt du das, aus TypeName()?
Hast du den Tip von Rainer mit CStr() bei SubAddress und TextToDisplay getestet, das ist aus deiner Antwort nicht abzulesen.
Und, der Fehler steckt oft im Detail, um das ausschließen zu können,
Cells(2 + anzahl, 1)
war in beiden Test identisch?
Und grundsätzlich, „funktioniert nicht“ ist sehr ärmlich, ist sowieso voll schwierig aus der Ferne zu helfen, jeder Hinweis ist eine Spur, also sag was passiert, explodiert dein PC, tut sich gar nix, kommt der Debugger, markiert er eine Zeile, welche, wie lautet die Fehlermeldung u.v.m.
Mannomann, ist doch in deinem Interesse uns alles mitzuteilen was du weißt zu dem problem.
Gruß
Reinhard
1 „Gefällt mir“
Danke euch beiden.
die Version mit dem Cstr() funktioniert auch.
da scheint wohl wirklich der Datentyp das Problem gewessen zu sein.
als Fehlermeldung kamm immer
Laufzeitfehler ‚5‘:
Ungültiger Prozeduraufruf oder ungültiges Argument
Gruß
Phillip