Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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
Inhaltsverzeichnis

Hyperlink übertragen, zweiter Fall.

Hyperlink übertragen, zweiter Fall.
20.10.2021 18:34:21
Eisi
https://www.herber.de/bbs/user/148711.xlsm
Hallo zusammen,
ich habe alles durchsucht und probiert, aber ich schaffe es einfach nicht. Darum brauche ich bitte Eure Hilfe.
Der Code in der Beispielmappe erfüllt seinen Zweck. Es wird auch der Hyperlink mit Formatierung mit rüber kopiert, aber halt ohne Funktion. Ich kann ihn also nicht aufrufen.
Liegt das evt. an der Formel in der Zelle?
Wäre super cool, wenn jemand eine Lösung für mich hätte. Hänge den ganzen Tag nur an diesem Problem, darf man eh nicht laut sagen ;-)
Vielen Dank.
VG Eisi :-)

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink übertragen, zweiter Fall.
20.10.2021 18:44:41
Yal
Hallo Eisi,
es müsste zuerst inklusiv Formatierung übertragen werden, dann nur die Value:

.Cells(lastrow, 2).PasteSpecial Paste:=xlPasteAllUsingSourceTheme 'Überträgt die Formatierung.
.Cells(lastrow, 2).PasteSpecial Paste:=xlValues 'Fügt die kopierten Werte ein.
Um den Spaghetti-Code zu vermeiden, da die beide Funktionen sich nur an einer einzigen Stelle unterscheiden, kannst Du die Parameter übergeben:

Sub KopierenNach(Versatz As Integer)
lastrow = .Cells(.Rows.Count, 2).End(xlUp).Row + Versatz ' Letzte Zelle in Spalte 6 (F) suchen + 2 oder 9 Zeilen darunter einfügen
End Sub
Es wird dann so gerufen:

Sub AngebotsMengePlattenUebertragen()
If (Sheets("2_Positionen").Range("B10"))  "" Then
KopierenNach Versatz:=2
Else
KopierenNach Versatz:=9
End If
End Sub
Die Benennung der Variablenname ist nicht notwendig. KopierenNach 2 und KopierenNach 9 würde auch funktionieren.
VG
Yal
Anzeige
AW: Hyperlink übertragen, zweiter Fall.
20.10.2021 18:55:36
Eisi
Hallo Yal,
coole Antwort, super herzlichen Dank.
Probiere ich morgen früh gleich mal aus.
GLG Eisi :-)
Einige Tipp
20.10.2021 19:09:18
Yal
Hallo Eisi,
na jut, man könnte auch Klugscheisserei dazu sagen ;-)
Die Variablendeklaration sind -wenn auch nicht zwingend erforderlich- immer am erste Stelle in einer Sub (99,99% alle Programmierer machen so)
Wenn Du schon "LastRow" ermittelst, versaue es nicht sofort mit dem Versatz, sondern nutze den Versatz, wenn Du es brauchst. So kannst Du LastRow wiederverwenden.
Persönlich -und soland man nicht international arbeitet- verwende ich gern deutsche Variablennamen, um sichtbarer zu machen: das ist meins und kein VBA-Vokabular. So machst Du auch mit den Sub-Namen.
Die Variable rngBereichFormat ist in dem Fall nicht notwendig. Es ist kein Fehler, aber "Lean Coding" ist sauberer.

Sub KopierenNach(Versatz As Integer)
Dim LetzteZeile As Long
Application.ScreenUpdating = False
With tbl_1_Kalkulation
.Range("A22:P34").AutoFilter Field:=2, Criteria1:="" ' 1) Filter setzen und leere Zellen ausblenden
.Range("F15:P43").Copy                    ' 2) Kompletten Tabellenbereich kopieren
End With
' 3) Letzte Zelle in Spalte 6 (F) 12 (L) (letzte Spalte) suchen und den kopierten Bereich 2 Zellen darunter einfügen
With tbl_2_Positionen
LetzteZeile = .Cells(.Rows.Count, 2).End(xlUp).Row ' Letzte Zelle in Spalte 6 (F) suchen + 2 Zeilen darunter einfügen
.Cells(LetzteZeile + Versatz, 2).PasteSpecial Paste:=xlPasteAllUsingSourceTheme 'Überträgt die Formatierung.
.Cells(LetzteZeile + Versatz, 2).PasteSpecial Paste:=xlValues 'Fügt die kopierten Werte ein.
.Range("B10:L" & LetzteZeile).Borders(xlEdgeBottom).Weight = xlMedium ' Formatiere die letzte Linie fett.
End With
Application.Goto tbl_1_Kalkulation.Range("A13")
tbl_1_Kalkulation.AutoFilterMode = False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
VG
Yal
Anzeige
Fehlermeldung :-(
21.10.2021 10:07:28
Eisi
https://www.herber.de/bbs/user/148724.xlsm
Hallo Yal,
danke für Deine Einführung in die richtige Programmierung. Mir gefällt das, weil ich ja richtig codieren will. Also danke für Deine Zeit :-)
Leider funktioniert es an dieser Stelle immer noch nicht:
'Hier kommt die Fehlermeldung:
'Laufzeitfehler 1004 > Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden.
.Cells(LetzteZeile + Versatz, 2).PasteSpecial Paste:=xlValues 'Fügt die kopierten Werte ein.
Wo liegt das Problem?
Vielen Dank für Deine Unterstützung.
GLG Eisi :-)
Anzeige
AW: Fehlermeldung :-(
21.10.2021 12:09:47
Yal
Hallo Eisi,
den xlValues kommt aus deinem Coding, aber ich denke das richtige ist xlPasteValues.
VG
Yal
AW: Fehlermeldung :-(
21.10.2021 12:36:38
Eisi
Hat keine Auswirkung. Tja?
AW: Fehlermeldung :-(
21.10.2021 12:49:25
Yal
Hallo Eisi,
den PasteSpecial scheint den CopyPaste-Mode zu resetten. Dann kopieren wir eben zweimal.

Sub KopierenNach(Versatz As Integer)
Dim LetzteZeile As Long
Application.ScreenUpdating = False
tbl_1_Kalkulation.Range("A22:P34").AutoFilter Field:=2, Criteria1:="" ' 1) Filter setzen und leere Zellen ausblenden
' 3) Letzte Zelle in Spalte 6 (F) 12 (L) (letzte Spalte) suchen und den kopierten Bereich 2 Zellen darunter einfügen
With tbl_2_Positionen
LetzteZeile = .Cells(.Rows.Count, 2).End(xlUp).Row ' Letzte Zelle in Spalte 6 (F) suchen + 2 Zeilen darunter einfügen
tbl_1_Kalkulation.Range("F15:P43").Copy                    ' 2) Kompletten Tabellenbereich kopieren
.Cells(LetzteZeile + Versatz, 2).PasteSpecial Paste:=xlPasteAllUsingSourceTheme 'Überträgt die Formatierung.
tbl_1_Kalkulation.Range("F15:P43").Copy                    ' 2) Kompletten Tabellenbereich kopieren
.Cells(LetzteZeile + Versatz, 2).PasteSpecial Paste:=xlPasteValues 'Fügt die kopierten Werte ein.
.Range("B10:L" & LetzteZeile).Borders(xlEdgeBottom).Weight = xlMedium ' Formatiere die letzte Linie fett.
End With
Application.Goto tbl_1_Kalkulation.Range("A13")
tbl_1_Kalkulation.AutoFilterMode = False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
VG
Yal
Anzeige
AW: Fehlermeldung :-(
21.10.2021 13:37:22
Eisi
Geht leider nicht.
Die Fehlermeldung kommt nach wie vor hier:
.Cells(LetzteZeile + Versatz, 2).PasteSpecial Paste:=xlPasteValues 'Fügt die kopierten Werte ein.
AW: Fehlermeldung :-(
21.10.2021 15:40:20
Yal
Hallo Eisi,
man, man, man! Ich habe lange gebraucht, bis ich verstanden habe voran das liegt.
Die bisherige Fehlermeldung sind wegen den verbundenen Zellen. Soweit schnell entdeckt.
Aber:
in H21 steht zwar einen Link, diese wird aber per Formel ermittelt und auch durch die Formel mit einem "lesbaren Text" angezeigt. Ich kann daraus den Link nicht auslesen. Und auch nicht die Formel "evaluieren", weil ich dann nur den lesbaren Text herausziehen würde.
Am einfachste wäre, Du verwendest irgendwo eine versteckte Zelle, wo der erste Teil diese HYPERLINKS() Formel, der für das Erzeugen des Links zuständig ist, reinkommt. Dann kann man den Wert dieses Links gezielt lesen und einsetzen:

Sub KopierenNach()
Dim LetzteZeile As Long
Application.ScreenUpdating = False
tbl_1_Kalkulation.Range("A22:P34").AutoFilter Field:=2, Criteria1:=""  ' 1) Filter setzen und leere Zellen ausblenden
tbl_1_Kalkulation.Range("F15:P43").Copy '29 Zeilen, 11 Spalten (für den Resize)
' 3) Letzte Zelle in Spalte 6 (F) 12 (L) (letzte Spalte) suchen und den kopierten Bereich 2 Zellen darunter einfügen
With tbl_2_Positionen
LetzteZeile = .Range("F99999").End(xlUp).Row + 2 ' Letzte Zelle in Spalte 6 (F) suchen + 2 Zeilen darunter einfügen
'keine Versatz mehr: wenn unter 10, 10 nehmen
If LetzteZeile 
Im Teil

'Hyperlink separat einsetzen
.Hyperlinks.Add .Cells(LetzteZeile + 6, 4), tbl_1_Kalkulation.Range("X21").Value
müsstest Du dann die dritte Anteil eventuell den X21 anpassen, falls Du den Link-Adresse nicht in X21 hast
Ich habe bei der Gelegenheit entdeckt, warum die Prüfung B10 "" und ersetzt mit einem

If LetzteZeile 
Prüfung von B10 und Übergabe von Parameter sind dann nicht mehr notwendig.
Auch die dicke Linie ganz unten wäre wahrscheinlich nicht richtig gesetzt worden.
Viel Erfolg damit
VG
Yal
Anzeige
Beispielmappe__AW: Fehlermeldung :-(
21.10.2021 16:55:36
Eisi
https://www.herber.de/bbs/user/148732.xlsm
Hallo Yal,
ich bin ziemlich am Ende. Herzlichen Dank für Deine große Hilfe.
Ich habe die Mappe nochmal hochgeladen, weil ich das mit dem Hyperlink getrennt setzen wohl nicht verstanden habe, weil es einfach nicht geht.
Magst Du bitte nochmal drüber schauen.
Ach ja, der Code mit der Zeile fett bringt mir eine Fehlermeldung. Ist aber nicht so wild, weil die Tabelle unten trotzdem eine fette Linie hat.
GLG Eisi :-)
Beispielmappe__AW: Fehlermeldung :-(
21.10.2021 18:03:51
Yal
Hallo Eisi,
ganz einfach:
Die Formel =HYPERLINK() erwartet 2 Parameter (besonders gut sichtbar, wenn man den Formel-Assitent öffnet): "Hyperlink_Adresse" und "freundlicher_Name"
Als Hyperlink_Adresse steht bei Dir eine Formel, die ich nicht auswerten kann:
_xlfn.XLOOKUP($F$15;'D_2-Schicht'!$E:$E;'D_2-Schicht'!$X:$X;0;0;1)
Diese Formel muss in R21 kommen (mit einem "=" davor)
Dann kannst Du in H21 die Formel so vereinfachen:
=HYPERLINK($R$21;"Produktbeschreibung")
Dicke Linie:
Falsch

.Cells("F99999").End(xlUp).EntireRow.Range("B1:L1").Borders(xlEdgeBottom).Weight = xlMedium
Richtig

.Range("F99999").End(xlUp).EntireRow.Range("B1:L1").Borders(xlEdgeBottom).Weight = xlMedium
Cells erwartet Zeile- und Spalte-Wert!
VG
Yal
Anzeige
Beispielmappe__AW: Fehlermeldung :-(
22.10.2021 14:04:17
Eisi
Hallo Yal,
vielen Dank für Deine Hilfe. Dein Lösungsansatz hätte mir zwar gefallen, weil einfach, aber funktioniert nicht.
Zumindest nicht wenn ich das mache ;-)
Aber das Problem wurde heute Morgen Gottseidank gelöst.
Es kann zwar jetzt nicht mehr mit dem Filter gearbeitet werden, aber ich blende dann über Formeln die Zellen aus die leer bleiben sollen.
Vielen herzlichen Dank für Deine lehrreichen Ausführungen, gerne wieder :-)
GLG Eisi :-)
Vielen Dank für die Rückmeldung
22.10.2021 16:24:46
Yal
Hallo Eisi,
wenn ich das gesamte rückblicke, dachte ich, dass einzige Problem dieses Link sei, dass danach weiterhin funktionieren sollte. Deine letzte Meldung ist dazu leicht verwirrend.
Weiterhin viel Erfolg
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige