Hyperlink in verbundener Zelle

Hallöchen,

ich möchte gerne in meiner Excel-Statistik (für Tischtennis) einen Button einrichten, der (bei Klick) auf eine vorher in einem anderen Blatt eingebene URL geht.
Die URL würde ich gerne im Blatt „Einstellungen“ im Bereich C35:G38 eingeben.
Mit der Formel

 Sheets("Einstellungen").Select
 Range("C35:G38").Select
 Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

klappts jedoch nicht einwandfrei. Wenn ich die Adresse im Zellverbund (C35:G38) ändere, nimmt Excel immer noch die vorher eingegebene URL. Es scheint an den verbundenen Zellen zu liegen. Wenn ich die URL in „nur“ eine Zelle packe und den Verweis auf „nur“ die eine Zelle nehme, dann gehts. Aus layouttechnischen Gründen würde ich die Zellverbindung aber ganz gerne behalten. Geht das?

Vielen Dank für Eure Mühe!

Gruß Daniel

Hallo Daniel,
verbundene Zellen sind zwar optisch schön, machen aber ansonsten nur Ärger und den reichlich.
Mach lieber in tabelle2 oder so einen Verweis auf die erste der verbundenen Zellen und arbeite mit dieser Zelle in Tabelle2.
Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

danke für die schnelle Antwort. Ich habe bereits versucht, einen Verweis in eine andere Tabelle zu „legen“, allerdings weiß ich nicht genau, wie die Formel dafür aussehen muss. Ich möchte ja eine 1 zu 1 Kopie des Links im anderen Blatt haben und nicht einen „Verweis auf den Verweis“. Mit

=Einstellungen!C35

wird zwar der Inhalt kopiert, aber die Zelle ist nicht als Hyperlink markiert. Hast Du vielleicht die passende Formel im Kopf :wink: oder eine Möglichkeit, wie ich es in mein Makro einbauen könnte?

Ein schönes Wochenende und viele Grüße,
Daniel

Hallo!

wenn man ein Makro aufzeichnet, erreicht man zum erstellen eines Hyperlinks:
Range(„C24:E24“).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
http://www.google.de“, TextToDisplay:=„http://www.google.de

zum Aendern eines Hyperlinks:
Range(„C24:E24“).Select
Selection.Hyperlinks(1).Address = „http://www.googlle.de/

also: wenn Du schon nen Link hast, dann musst Du nicht nur den Inhalt aendern (so wie bei Deinem Makroauszug) sondern eben auch den Link selbst -> im Makro musst Du halt statt der Klartextadresse mit ner Variable mit dem Inhalt aus der Zelle soundso arbeiten…

cu
kai

1 Like

Lösung gefunden
Hallo Kai!

Danke für Deine Hilfe! Ich hab mich vorhin nochmal einige Zeit mit dem Problem befasst und eine Lösung gefunden. Dein Ansatz hat mir Denkanregungen gegeben, auch wenn ich es etwas anders gelöst habe. Sie ist zwar recht umständlich, aber so kann ich mein Design mit verbundenen Zellen beibehalten ( @ Reinhard :wink: ).
Meine Lösung sieht einfach ausgedrückt wie folgt aus:

– Blatt Einstellungen:

  • Verbundene Zellen „entbinden“
  • Link (aus der einen Zelle) kopieren
    – Blatt Baukasten
  • Link einfügen
  • Zelle kopieren und in beliebiger Zelle wieder einfügen
  • Zellen verbinden (so wie in Blatt Einstellungen, sodass aus der einzelnen Linkzelle ein Verbund mit Link entsteht)
  • verbundene Zellen kopieren
    – Blatt Einstellungen
  • Verbundene Zellen einfügen

Viele Grüße,
Daniel

PS: So klappts jetzt einwandfrei :wink:

Sub Tabelle\_Link()
 Application.ScreenUpdating = False
 Sheets("Einstellungen").Select
 With Selection
 .HorizontalAlignment = xlGeneral
 .VerticalAlignment = xlCenter
 .WrapText = True
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = True
 End With
 Range("C35:G38").Select
 Selection.UnMerge
 Range("C35").Select
 Selection.Copy
 Sheets("Baukasten").Select
 Range("A103").Select
 ActiveSheet.Paste
 With Selection
 .HorizontalAlignment = xlGeneral
 .VerticalAlignment = xlCenter
 .WrapText = True
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = True
 End With
 Range("A103").Select
 Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
 Sheets("Einstellungen").Select
 Application.CutCopyMode = False
 Range("C35:G38").Select
 With Selection
 .HorizontalAlignment = xlCenter
 .VerticalAlignment = xlCenter
 .WrapText = True
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
 Selection.Merge
 Sheets("Baukasten").Select
 Rows("105:108").Select
 Range("F105").Activate
 Selection.Delete Shift:=xlUp
 Range("A103").Select
 Selection.Copy
 Range("A105").Select
 ActiveSheet.Paste
 Range("A105:E108").Select
 Application.CutCopyMode = False
 With Selection
 .HorizontalAlignment = xlCenter
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
 Selection.Merge
 With Selection.Interior
 .ColorIndex = 19
 .Pattern = xlSolid
 .PatternColorIndex = xlAutomatic
 End With
 Selection.Copy
 Sheets("Einstellungen").Select
 Range("C35:G38").Select
 ActiveSheet.Paste
 Range("L1").Select
 Sheets("Baukasten").Select
 Application.CutCopyMode = False
 Range("H1").Select
 Sheets("Tabelle").Select
 Application.ScreenUpdating = True
End Sub

Link zur Statistik
Falls jemand das Problem (Button: „2. Tabelle auf www.wttv.de markieren und kopieren“ auf dem Blatt „Tabelle“) nachvollziehen möchte:

http://www.kingpong.de\rangliste\TT-Statistik_beta.xls
–> 1,36 MB

Sorry Daniel, hatte/habe keine Zeit
Hi Daniel,
seit Freitag, also auch am WE bin ich täglich am Malochen, dann abends noch bisschen Strassencafe usw um überhaupt was von den schönen Sommertagen mitzukriegen. Deshalb habe ich so bis Do/Fr keine Zeit für Excel, sonst hätte ich schon mal rumprobiert.
Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

:wink:
Hi Reinhard,

versteh mich bitte bloß nicht falsch! „@ Reinhard“ im letzten Posting war kein Appell an Dich, sondern die Info, dass ich eine Lösung fürs „Design-Problem“ gefunden habe, dass Du angesprochen hattest :wink:
Ich erwarte von keinem hier, dass er auf meine Anfragen eine Antwort gibt. Freuen tue ich mich natürlich immer.

In diesem Sinne, genieße die schönen Sonnentage, solange wie es geht!

Viele Grüße,
Daniel

Hallo Daniel,
habe jetzt mal über dein Makro rübergeschaut, es ist durch die vielen unnötigen Selects schwer verdaulich.
Anstatt

Sheets("Einstellungen").Select
With Selection
 .HorizontalAlignment = xlGeneral
 .VerticalAlignment = xlCenter
 .WrapText = True
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = True
End With
Range("C35:G38").Select
Selection.UnMerge
Range("C35").Select
Selection.Copy
Sheets("Baukasten").Select
Range("A103").Select
ActiveSheet.Paste

Ist doch folgender Code leichter lesbar:

With Sheets("Einstellungen")
 .HorizontalAlignment = xlGeneral
 .VerticalAlignment = xlCenter
 .WrapText = True
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = True
 .Range("C35:G38").UnMerge
 .Range("C35").Copy Destination:=Sheets("Baukasten").Range("A103")
End With

Weiterhin ist es so noch übersichtlicher:
With Sheets("Einstellungen")
 mergcell (True)
 .Range("C35:G38").UnMerge
 .Range("C35").Copy Destination:=Sheets("Baukasten").Range("A103")
End With

mit der folgenden Sub:

Sub mergcell(mc As Boolean)
 With Selection
 .HorizontalAlignment = xlGeneral
 .VerticalAlignment = xlCenter
 .WrapText = True
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = mc
 End With
End Sub

Gruß
Reinhard

 


> Sub Tabelle\_Link()  
> Application.ScreenUpdating = False  
> Sheets("Einstellungen").Select  
> With Selection  
> .HorizontalAlignment = xlGeneral  
> .VerticalAlignment = xlCenter  
> .WrapText = True  
> .Orientation = 0  
> .AddIndent = False  
> .IndentLevel = 0  
> .ShrinkToFit = False  
> .ReadingOrder = xlContext  
> .MergeCells = True  
> End With  
> Range("C35:G38").Select  
> Selection.UnMerge  
> Range("C35").Select  
> Selection.Copy  
> Sheets("Baukasten").Select  
> Range("A103").Select  
> ActiveSheet.Paste  
> With Selection  
> .HorizontalAlignment = xlGeneral  
> .VerticalAlignment = xlCenter  
> .WrapText = True  
> .Orientation = 0  
> .AddIndent = False  
> .IndentLevel = 0  
> .ShrinkToFit = False  
> .ReadingOrder = xlContext  
> .MergeCells = True  
> End With  
> Range("A103").Select  
> Selection.Hyperlinks(1).Follow NewWindow:=False,  
> AddHistory:=True  
> Sheets("Einstellungen").Select  
> Application.CutCopyMode = False  
> Range("C35:G38").Select  
> With Selection  
> .HorizontalAlignment = xlCenter  
> .VerticalAlignment = xlCenter  
> .WrapText = True  
> .Orientation = 0  
> .AddIndent = False  
> .IndentLevel = 0  
> .ShrinkToFit = False  
> .ReadingOrder = xlContext  
> .MergeCells = False  
> End With  
> Selection.Merge  
> Sheets("Baukasten").Select  
> Rows("105:108").Select  
> Range("F105").Activate  
> Selection.Delete Shift:=xlUp  
> Range("A103").Select  
> Selection.Copy  
> Range("A105").Select  
> ActiveSheet.Paste  
> Range("A105:E108").Select  
> Application.CutCopyMode = False  
> With Selection  
> .HorizontalAlignment = xlCenter  
> .Orientation = 0  
> .AddIndent = False  
> .IndentLevel = 0  
> .ShrinkToFit = False  
> .ReadingOrder = xlContext  
> .MergeCells = False  
> End With  
> Selection.Merge  
> With Selection.Interior  
> .ColorIndex = 19  
> .Pattern = xlSolid  
> .PatternColorIndex = xlAutomatic  
> End With  
> Selection.Copy  
> Sheets("Einstellungen").Select  
> Range("C35:G38").Select  
> ActiveSheet.Paste  
> Range("L1").Select  
> Sheets("Baukasten").Select  
> Application.CutCopyMode = False  
> Range("H1").Select  
> Sheets("Tabelle").Select  
> Application.ScreenUpdating = True  
> End Sub

Hallo Reinhard!

Ich hab die Woche kaum Zeit gehabt, deshalb auch erst jetzt die Antwort. Wenn ich mit VBA arbeite, dann mit der „Makro aufzeichnen“-Funktion. So kommt der für VBA-Vertraute Programmierer etwas wirre Code raus :wink:
Ich bin froh, wenn ich bei den auftretenden Problemen eine Lösung finde, auch wenn sie nicht immer schön anzusehen ist.

Viele Grüße,
Daniel

Ich hab die Woche kaum Zeit gehabt, deshalb auch erst jetzt
die Antwort. Wenn ich mit VBA arbeite, dann mit der „Makro
aufzeichnen“-Funktion. So kommt der für VBA-Vertraute
Programmierer etwas wirre Code raus :wink:
Ich bin froh, wenn ich bei den auftretenden Problemen eine
Lösung finde, auch wenn sie nicht immer schön anzusehen ist.

Hallo Daniel,
ich bin kein programmierer oder so, auf der Arbeit hab ich keinen PC, ich arbeite richtig *g
Excel/VBA mache bzw erlerne ich nur für meinen Kopf um ihn geistig auszulasten.
Und logo benutze ich auch den Makrorekorder um dann, so wie ichs von anderen gelernt bekam, lerns von mir, dann die unnötigen Slects rauszuwerfen.
Weil, bei einem langen Code hast du mir vielen Selects, keinen Überblick mehr wo das was von wo nach wo kopiert o.ä wird.
Es war keine Kritik, sondern wohlwollende Aufforderung etwas besser zu machen.
Lieben Gruß
Reinhard

:wink:
Hallo Reinhard,

als Kritik habe ich das auch nicht aufgefasst! Ich wollte mich nur mehr oder weniger davor drücken, den Code nochmal zu optimieren :wink: Ich bin froh, wenn ich die Statistik in den nächsten Tagen online stellen kann (nachdem ich das letzte Problem beseitigt habe - siehe neuer Thread, soll aber nicht aufdringlich gemeint sein!). Die Saison hat vor einer Woche angefangen …
Die Rangliste habe ich programmiertechnisch übrigens jetzt abgeschlossen. Das Feature mit der Bilder-Pyramide von Dir ist bei den Kindern super angekommen!

Lieben Gruß,
Daniel