Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zelle links neben aktiver auswählen

Zelle links neben aktiver auswählen
25.08.2021 06:52:23
Lenny
Guten Tag zusammen
Dank diesem Forum konnte ich schon etliche Probleme lösen. Auch bei meinem aktuellen Problem habe ich bereits Unterstützung erhalten.
Mit folgendem Code lese ich Links aus Zellen aus und lege sie in den Zwischenspeicher damit diese an anderer Stelle verwendet werden können.

Sub CommandButton1_Click()
Dim objClipboard As DataObject
Set objClipboard = New DataObject
'Falls Link in Zelle einfach >>als Text>als Hyperlink
In meinem Excel ist jetzt noch eine Filterfunktion dazugekommen. Dadurch kann ich nicht mehr eine explizite Zelle [Range("B3")] auslesen.
Mit ActiveCell.Offset(0, -1) sollte das aber doch gehen? Der Button, der die Zelle ausliest, steht immer eine Zelle rechts derjenigen in der der Link steht. Das [Range("B3")] einfach durch ActiveCell.Offset(0, -1) ersetzten funktioniert nicht.
Bedanke mich schon mal in voraus für die Unterstützung.
Gruss
Björn
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle links neben aktiver auswählen
25.08.2021 07:48:09
Daniel
Hi
Die ActiveCell ändert sich nicht, wenn du auf einen Button klickst.
Wenn du mit ActiveCell.Offset(0, 1) arbeiten willst, musst du zuerst die rechte Nachbarzellen auswählen und danach den Button klicken.
Wenn du die linke Nachbarzelle des Buttons haben willst, probiere
Commandbutton1.TopleftCell.Offset(0, -1)
Die TopleftCell ist die Zelle, in der sich die linke obere Ecke des Buttons befindet.
Gruß Daniel
Anzeige
AW: Zelle links neben aktiver auswählen
25.08.2021 15:13:32
Lenny
Danke Daniel. Eigentlich klar, dass die Zelle nicht aktiv ist wenn ich auf den Button drücke.
Habe gerade noch ein Problem festgestellt und hoffe ihr habt hierzu ebenfalls eine Lösung.
Der kopierte Hyperklink aus der Zelle entspricht nicht dem Gesamtpfad. Irgendwie weiss Excel, dass das entsprechende Dokumente auf einem Netzwerklaufwerk liegt und zeigt diesem Teil nicht in der Andresse an. Der Link im Excel funktioniert jedoch.
Als Lösung sehe ich folgende Möglichkeit. der Codeteil [ objClipboard.SetText CommandButton2.TopLeftCell.Offset(0, -1).Hyperlinks(1).Address ] kopiert mir ja den Hyperlink. Jetzt müsste ich nur noch sagen, dass er mir z.B. folgenden Text [ \\k\projekte\ ] vor diese kopierte Adresse hinzufügt.
Wie ich das umsetzten kann, keine Ahnung. Dafür ist mein VBA Knowhow leider noch zu gering.
Grüsse
Björn
Anzeige
Stringverkettung
25.08.2021 18:34:06
{Boris}
Hi,

Als Lösung sehe ich folgende Möglichkeit. der Codeteil [ objClipboard.SetText CommandButton2.TopLeftCell.Offset(0, -1).Hyperlinks(1).Address ] kopiert mir ja den Hyperlink. Jetzt müsste ich nur noch sagen, dass er mir z.B. folgenden Text [ \\k\projekte\ ] vor diese kopierte Adresse hinzufügt.
Wie ich das umsetzten kann, keine Ahnung. Dafür ist mein VBA Knowhow leider noch zu gering.
Mit VBA-Know-How hat das nicht so viel zu tun, vielmehr mit allgemeiner Stringverkettung.
objClipboard.SetText "\\k\projekte\" & CommandButton2.TopLeftCell.Offset(0, -1).Hyperlinks(1).Address
VG, Boris
Anzeige
AW: Stringverkettung
26.08.2021 12:41:33
Lenny
Perfekt! Vielen Dank!!!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zelle links neben aktiver auswählen in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul hinzufügen: Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Code eingeben: Füge den folgenden VBA-Code ein:

    Sub CommandButton1_Click()
       Dim objClipboard As DataObject
       Set objClipboard = New DataObject
       objClipboard.SetText CommandButton1.TopLeftCell.Offset(0, -1).Value
       objClipboard.PutInClipboard
    End Sub
  4. Button erstellen: Füge einen Button in dein Excel-Arbeitsblatt ein und weise ihm das Makro CommandButton1_Click zu.

  5. Testen: Klicke auf den Button, um den Wert der Zelle links neben dem Button in die Zwischenablage zu kopieren.


Häufige Fehler und Lösungen

  • Problem: Der Wert wird nicht aus der gewünschten Zelle ausgelesen.

    • Lösung: Stelle sicher, dass der Button korrekt positioniert ist. Der Code CommandButton1.TopLeftCell.Offset(0, -1) bezieht sich auf die Zelle links vom Button.
  • Problem: Der kopierte Hyperlink zeigt nicht den vollständigen Pfad an.

    • Lösung: Verwende die Stringverkettung, um den gewünschten Pfad hinzuzufügen:
    objClipboard.SetText "\\k\projekte\" & CommandButton2.TopLeftCell.Offset(0, -1).Hyperlinks(1).Address

Alternative Methoden

  • Direktes Auslesen mit ActiveCell: Wenn du die Zelle links von einer aktiven Zelle auslesen möchtest, kannst du ActiveCell.Offset(0, -1) verwenden. Beachte jedoch, dass die ActiveCell nicht automatisch wechselt, wenn du auf einen Button klickst.

  • Formeln nutzen: Eine alternative Methode ist die Verwendung von Excel-Formeln, um Werte in eine Zelle zu kopieren, ohne VBA zu verwenden. Zum Beispiel könntest du die Formel =B3 in eine andere Zelle einfügen, um den Wert aus Zelle B3 zu übernehmen.


Praktische Beispiele

  1. Hyperlink kopieren: Wenn du den Hyperlink von Zelle B3 in die Zwischenablage kopieren möchtest:

    Sub CopyHyperlink()
       Dim objClipboard As DataObject
       Set objClipboard = New DataObject
       objClipboard.SetText "\\k\projekte\" & Range("B3").Hyperlinks(1).Address
       objClipboard.PutInClipboard
    End Sub
  2. Zelle links vom Button auslesen: Um den Wert der Zelle links vom Button auszulesen und anzuzeigen:

    MsgBox CommandButton2.TopLeftCell.Offset(0, -1).Value

Tipps für Profis

  • Verwendung von With-Anweisungen: Nutze With-Anweisungen, um den Code leserlicher und effizienter zu gestalten:

    With CommandButton1.TopLeftCell.Offset(0, -1)
       objClipboard.SetText .Value
    End With
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Fehler zu vermeiden:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Warum funktioniert ActiveCell.Offset nicht, wenn ich auf den Button klicke?
Die ActiveCell bleibt unverändert, wenn du auf einen Button klickst. Du musst die Zelle auswählen, bevor du den Button betätigst.

2. Wie kann ich sicherstellen, dass der Hyperlink immer korrekt kopiert wird?
Verwende Stringverkettung, um den vollständigen Pfad hinzuzufügen, während du den Hyperlink kopierst. Achte darauf, dass der Hyperlink korrekt referenziert ist.

3. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige