2.4k Aufrufe
Gefragt in Tabellenkalkulation von wjw Einsteiger_in (72 Punkte)
Hi --

vor einiger Zeit habe ich mit Hilfe dieses Forums (Dank an Rainer!) ein Makro zum automatischen Verlinken zwischen zwei Tabellenblättern bekommen, welches gute Dienste lieferte; jetzt gibt es Problem und das Makro funktioniert nicht mehr:

Hier nochmal die Ausgangssituation:
Per Makro sollen Links zwischen den Blättern "2010" und "Übersicht" erstellt werden, wobei die Felder:

C2
E2
G2
I2
K2
...
(also immer das "übernächste" in Zeile 2)
in "2010"

zu den Feldern:

A3
A4
A5
A6
A7
...

in "Übersicht"
führen sollen.

Tatsächlich funktioniert das zwar, aber nur für die ersten 12 Verknüpfungen, ab AA2 ist Schluss! Wo liegt der Fehler?

Hier der Code:



Option Explicit
Sub Test()
Dim intI As Integer, intZ As Integer, intAnz As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("2010")
Set ws2 = Worksheets("Übersicht")
Application.ScreenUpdating = False
Range("A2003").FormulaR1C1 = "=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"""")"
Range("A2002").FormulaR1C1 = "=COLUMN()"
Range("A2002:A2003").Copy
Rows("2000:2001").Select
ActiveSheet.Paste
intAnz = InputBox("Wieviel Hyperlinks?") + 2
intZ = 3
ws1.Select
For intI = 3 To intAnz * 2 - 2 Step 2
Cells(2, intI).Select
ws1.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Übersicht!A" & intZ, TextToDisplay:="" & intZ - 2
intZ = intZ + 1
Next
ws2.Select
For intI = 3 To intAnz
Cells(intI, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="2010!" _
& WorksheetFunction.HLookup(intI * 2 - 3, Rows("2000:2001"), 2, 0) & "2", _
TextToDisplay:="" & intI - 2
Next
ws1.Select
Rows("2000:2003").Clear
Range("A5").Select
Application.ScreenUpdating = True
End Sub


Vielen Dank im Voraus!

werner

ps.: ich hab so gar keine Ahnung von VBA :--\

8 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Werner,

Tatsächlich funktioniert das zwar, aber nur für die ersten 12 Verknüpfungen,
ab AA2 ist Schluss! Wo liegt der Fehler?


....das kann ich nicht bestätigen.

Habe das Makro mit verschiedenen Anzahlen getestet (bis 250 Hyperlinks), es läuft
bei mir korrekt.

Hast Du vielleicht noch andere Makros in Deiner Datei, die sich gegenseitig
behaken könnten?
Mehr kann ich dazu leider nicht sagen.

Gruss
Rainer
0 Punkte
Beantwortet von wjw Einsteiger_in (72 Punkte)
Danke für den Test, Rainer!

muss also nochmal genauer prüfen, was da los ist. Leider komm ich erst in ein paar Tagen wieder an die Datei. Werde mich nächste Woche melden.

Liebe Grüße,

w
0 Punkte
Beantwortet von wjw Einsteiger_in (72 Punkte)
Hallo Rainer (und alle die mitlesen)

erst mal Entschuldigung, dass ich so lange schwieg. Da kam doch manches anders, als ich dachte ...

Da mein Problem nun ein recht spezielles ist und Du, Rainer mir schon damals das Makro geschrieben hast, möcht ich dich bitten, ob du dir die Datei mal ansehen könntest? Ich komm nicht weiter damit.

Habe einen screenshot und weitere Beschreibungen zusammengezipt:

http://rapidshare.de/files/48997727/2010_test.zip.html

Jetzt schon vielen Dank
und herzliche Grüße,

werner
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Werner,

anbei die Datei zurück.
Habe die Hyperlinks gelöscht und mit dem Makro "Test" neu erstellt und sie funktionieren alle.

Datei zurück

Gruss
Rainer
0 Punkte
Beantwortet von wjw Einsteiger_in (72 Punkte)
Lieber Rainer,

vielen, vielen Dank! Warum hat das bei mir nicht geklappt? Wenn ich nächstes Mal eine Aktualisierung brauche, müsste ich in Modul 1 alle Instanzen der Jahreszahl 2010 zu 2011 ändern, oder?

w
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Werner,

wenn Du ein neues Arbeitsblatt namens "2011" einfügst musst Du die Codezeile

Set ws1 = Worksheets("2010")

in

Set ws1 = Worksheets("2011")

ändern, mehr nicht.

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Werner,

sorry, habe etwas unteschlagen.

auch in diesem Codeteil muss der Arbeitsblattname geändert werden.

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="2010!" _ & WorksheetFunction.HLookup(intI * 2 - 3, Rows("2000:2001"), 2, 0) & "2", _
TextToDisplay:="" & intI - 2

Lösche aber nicht das Ausrufezeichen hinter der Jahreszahl!!!

Das war übrigens der Grund, dass Deine Hyyperlinks nicht mehr funktionierten.

Gruss
Rainer
0 Punkte
Beantwortet von wjw Einsteiger_in (72 Punkte)
nochmal ganz herzlichen Dank, Rainer!

.w
...