Anzeige
Archiv - Navigation
1636to1640
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

Fehler in Namensliste

Fehler in Namensliste
26.07.2018 16:38:41
Andi
Hallo zusammen
Ich habe in Tabelle1 ein Inhaltsverzeichnis welches mit Hyperlinks auf bestimmte Zellen in der Spalte A auf Tabelle2 springt. Die Zielzellen haben einen Namen im Namensmanager.
Dabei ist die aktive Zelle am unteren Rand des Bildschirms zu sehen. Ich möchte jedoch dass die aktive Zelle am oberen Bildschirmrand ist.
Mein Versuch war folgender Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim oName As Object
On Error Resume Next
For Each oName In ActiveWorkbook.Names
If ActiveCell.Name = oName Then
ActiveWindow.ScrollRow = ActiveWindow.ActiveCell.Row
End If
Next oName
End Sub

Das funktioniert für den Sprung aus dem Inhaltsverzeichnis. Wird aber irgendwo in der Tabelle2 etwas eingegeben wird die neue Zelle sofort nach oben gescrollt.
Kann ich den Befehl:
On Error Resume Next
ändern, so dass er das nächste Each nimmt anstelle der nächsten Zeile? (Der Fehler tritt in der If Abfrage auf wenn die aktive Zelle keinen Namen hat)
Oder gibt es generell eine einfachere Lösung für meinen Wunsch?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in Namensliste
26.07.2018 16:46:46
Hajo_Zi
in der Art
Application.Goto Reference:=Range("F6"), scroll:=True

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Fehler in Namensliste
26.07.2018 16:59:35
Daniel
Hi
da musst du zusätzlich die Variable err abfragen, diese enthält nach einem Fehler die Fehlernummer (0 = kein Fehler)
allerdings musst du das err immer wieder auf 0 zurücksetzen, ansonsten bleibt immer der erste Err-Wert erhalten.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim oName As Object
On Error Resume Next
For Each oName In ActiveWorkbook.Names
If ActiveCell.Name = oName Then
if err = 0 then ActiveWindow.ScrollRow = ActiveWindow.ActiveCell.Row
End If
err = 0
Next oName
End Sub
Gruß Daniel
Anzeige
AW: Fehler in Namensliste
26.07.2018 17:23:24
Nepumuk
Hallo Andi,
der Sinn erschließt sich mir zwar nicht, aber "wenn's schee macht":
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim objName As Name
    For Each objName In ThisWorkbook.Names
        If Not Intersect(Range(objName.RefersTo), Target) Is Nothing Then
            Call Application.Goto(Reference:=Target, Scroll:=True)
            Set objName = Nothing
            Exit For
        End If
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Fehler in Namensliste
26.07.2018 17:55:00
Nepumuk
Hallo Andi,
da ist noch ein Fehler drin. So ist's richtig:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim objName As Name
    For Each objName In ThisWorkbook.Names
        If objName.RefersToRange.Parent Is Me Then
            If Not Intersect(objName.RefersToRange, Target) Is Nothing Then
                Call Application.Goto(Reference:=Target, Scroll:=True)
                Set objName = Nothing
                Exit For
            End If
        End If
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Fehler in Namensliste
27.07.2018 10:32:01
Andi
Hallo Nepumuk
Ich habe mich etwas schlau gemacht ;-)
ThisWorkbook ist nicht ganz dasselbe wie ActiveWorkbook, der Unterschied ist mir alledings noch nicht klar. Ich arbeite noch daran.
Me bezieht sich in diesem Fall auf das Tabellenblatt. Ich nehme an es wird geprüft ob der aktuelle Name überhaupt in dieser Tabelle vorkommt.
Allerdings bricht auch dieses Makro ab wenn auf eine Zelle geklickt wird die keinen Namen hat. Das könnte ich wohl wie im Beispiel von Daniel lösen.
Vielen Dank für dein Beispiel
AW: Fehler in Namensliste
27.07.2018 08:06:32
Andi
Hallo zusammen
Vielen Dank, Daniels Lösung funktioniert super.
Ich werde auch noch die anderen Lösungen genau anschauen um zu begreifen was da genau gemacht wird. ;-)
Zwei Fragen an Nepumuk habe ich schon mal.
Ist ThisWorkbook.Names das selbe wie ActiveWorkbook.Names?
Me in der ersten If Zeile wird nicht dimensioniert. Ist das eine Systemvariable? und was beinhaltet sie?
Beste Grüsse
Andi
Anzeige
AW: Fehler in Namensliste
27.07.2018 11:09:34
Nepumuk
Hallo Andi,
ThisWorkbook ist die Mappe in der sich das Makro befindet das gerade läuft.
Me ist das Objekt in der sich das Makro befindet das gerade läuft. In deinem Fall die Tabelle.
Gruß
Nepumuk
AW: Fehler in Namensliste
27.07.2018 13:27:35
Andi
Hallo Nepumuk
Super, danke
Gerade ausprobiert: Wenn ich in einem Makro in eine andere Mappe wechsle, so bezieht sich ThisWorkbook auf die ursprüngliche Mappe und ActiveWorkbook auf die neue Mappe.
Gruss
Andi
AW: Fehler in Namensliste
27.07.2018 13:38:19
Nepumuk
Hallo Andi,
ja, das ist richtig.
Gruß
nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige