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

Komplette Zelladresse in Variabel speichern

Forumthread: Komplette Zelladresse in Variabel speichern

Komplette Zelladresse in Variabel speichern
31.03.2004 17:23:37
Franz
Ich möchte eine Liste mit der komplette Adresse von Zellen haben, die sich auf verschiedenen Worksheets befinden. Diese Adresse verwende ich dann als ein Link, sprich ich möchte per draufklicken zu der jeweiligen Zelle kommen.
Die komplette Adresse, mit Worksheet und Zellen info, erhalte ich scheinbar nur wenn ich die Excel function "ADDRESS" verwende. Dazu muss ich die Adresse aber erst in eine Zelle schreiben und dann kann ich sie erst in einer Variable speichern. Ich möchte aber diesen Umweg nicht gehen und die Adresse gleich direkt in einer String Variable ablegen.
Mein Code sieht momentan so aus:

Private Sub cboCheckSums_Click()
Dim wkb As Workbook
Dim ws As Worksheet
Dim varCell As Variant
Dim intRowCount As Integer
Dim strAddress As String
intRowCount = 14
With Application.ThisWorkbook
For Each ws In .Worksheets
'find all cells in sheet with "check"
With ws
For Each varCell In .UsedRange
Select Case varCell
Case "Check"
'if check is not equal to db value then make a list of all checks that
'don't match on Sheet A (1)
If varCell.Offset(1, 2).Value <> varCell.Offset(0, 2).Value Then
With Sheets("A (1)")
.Cells(intRowCount, 16) = ws.Name
.Cells(intRowCount, 18) = varCell.Address
'Den nächsten Schritt möchte ich in VBA und nicht im Worksheet machen
.Cells(intRowCount, 19) = "=ADDRESS(" & varCell.Row & "," & varCell.Column & ",1,TRUE," _
& """" & ws.Name & """" & ")"
strAddress = .Cells(intRowCount, 19).Value
'Make a link on Sheet A (1) to the Check cell that doesn't match (on another worksheet)
.Hyperlinks.Add Anchor:=Sheets("A (1)").Cells(intRowCount, 18), _
Address:="", SubAddress:=strAddress, TextToDisplay:=varCell.Address
End With
intRowCount = intRowCount + 1
End If
End Select
Next
End With
Next
End With
End Sub

Kennt jemand eine Möglichkeit, dass ich die Adresse nicht erst ins Workbook schreiben muss und alles in VBA machen kann?
Herzlichen Dank für eure Hilfe
Franz
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Komplette Zelladresse in Variabel speichern
31.03.2004 20:07:17
Josef Ehrensberger
Hallo Franz!
Probier's mal so!
strAddress = "'" & ws.Name & "'!" & varcell.Address

Gruß Sepp


Ein kluger Mann macht nicht alle Fehler selbst.
Er lässt auch anderen eine Chance.

(Sir Winston Churchill)


AW: Komplette Zelladresse in Variabel speichern
01.04.2004 09:19:59
Franz
Wow, einfach!
Danke vielmal!
Franz
Anzeige
Danke für die Rückmeldung! o.T.
01.04.2004 12:52:35
Josef Ehrensberger
Gruß Sepp
;
Anzeige

Infobox / Tutorial

Zelladresse in VBA als Variable speichern


Schritt-für-Schritt-Anleitung

Um eine komplette Zelladresse in einer Variablen zu speichern, ohne diese zuerst in eine Zelle zu schreiben, kannst du den folgenden VBA-Code verwenden. Hierbei wird die Zelladresse direkt in der Variablen strAddress abgelegt.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu.
  3. Kopiere den folgenden Code in das Modul:
Private Sub cboCheckSums_Click()
    Dim wkb As Workbook
    Dim ws As Worksheet
    Dim varCell As Range
    Dim intRowCount As Integer
    Dim strAddress As String
    intRowCount = 14

    With Application.ThisWorkbook
        For Each ws In .Worksheets
            With ws
                For Each varCell In .UsedRange
                    If varCell.Value = "Check" Then
                        If varCell.Offset(1, 2).Value <> varCell.Offset(0, 2).Value Then
                            With Sheets("A (1)")
                                .Cells(intRowCount, 16) = ws.Name
                                .Cells(intRowCount, 18) = varCell.Address
                                strAddress = "'" & ws.Name & "'!" & varCell.Address
                                .Hyperlinks.Add Anchor:=.Cells(intRowCount, 18), _
                                    Address:="", SubAddress:=strAddress, TextToDisplay:=varCell.Address
                            End With
                            intRowCount = intRowCount + 1
                        End If
                    End If
                Next varCell
            End With
        Next ws
    End With
End Sub

In diesem Code wird die strAddress Variable mit der vollständigen Adresse der Zelle befüllt, indem du den Namen des Worksheets und die Zelladresse kombinierst.


Häufige Fehler und Lösungen

  • Problem: Die Zelladresse wird nicht korrekt angezeigt.

    • Lösung: Stelle sicher, dass du die Zelladresse in der richtigen Form speicherst. Verwende ' & ws.Name & '!' & varCell.Address, um die korrekte Formatierung zu gewährleisten.
  • Problem: Hyperlinks funktionieren nicht.

    • Lösung: Prüfe, ob der SubAddress korrekt gesetzt ist. Achte darauf, dass der letzte Teil der Adresse korrekt auf das gewünschte Arbeitsblatt verweist.

Alternative Methoden

Eine alternative Methode, um die Zelladresse als Variable zu speichern, besteht darin, die Excel-Funktion ADDRESS nicht zu verwenden und stattdessen die direkte Kombination von Worksheet- und Zelladresse zu nutzen, wie in der Schritt-für-Schritt-Anleitung gezeigt. Diese Methode ist effizienter und vermeidet unnötige Schreiboperationen im Workbook.


Praktische Beispiele

Nehmen wir an, du möchtest alle Zellen, die den Wert "Check" enthalten, in einer Variablen speichern und Hyperlinks erstellen. Hier ist der Code, der dies in der Praxis umsetzt:

For Each varCell In .UsedRange
    If varCell.Value = "Check" Then
        strAddress = "'" & ws.Name & "'!" & varCell.Address
        ' Hyperlink wird hier hinzugefügt
    End If
Next varCell

Das Beispiel zeigt, wie du die Variable strAddress nutzen kannst, um auf eine bestimmte Zelle in einem anderen Worksheet zu verlinken.


Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Verwende Dim für die Variablen, um den Typ klar zu definieren, wodurch der Code übersichtlicher und weniger fehleranfällig wird.
  • Bei umfangreichen Datensätzen kann es hilfreich sein, die UsedRange-Eigenschaft effizient zu nutzen, um die Leistung zu verbessern.

FAQ: Häufige Fragen

1. Kann ich die Zelladresse auch in einer anderen Excel-Version verwenden? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.

2. Wie kann ich die Adresse einer Zelle in einer Variablen speichern, wenn ich nur eine bestimmte Bedingung prüfe? Du kannst die Zelladresse in einer Variablen speichern, indem du eine If-Bedingung verwendest, wie im obigen Schritt-für-Schritt-Beispiel gezeigt.

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