Excel 2013 VBA: Wo bin ich?
#1
Hallo zusammen,

trotz langem suchen in den Foren habe ich zu meinem Problem nichts richtiges gefunden.

In einem Workbook habe ich mehrere Tabellenblätter und in diesen sind viele Bereiche mit Namen definiert.
Klicke ich jetzt per Doppelklick in eine beliebige Zelle einer Tabelle möchte ich wissen ob und in welchem benannten Bereich ich mich befinde, oder ob die Zelle in keinem benannten Bereich liegt.

Wie müsste der Code mit einer VBA-Funktion oder einer Sub-Routine aussehen?
Wäre toll wenn jemand eine Idee hätte.

Vielen Dank für Eure Hilfe!
Top
#2
Hallo Erich

Vielleicht reicht ja auch schon dies: Setze den Zoom auf einen Wert <=34%.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#3
Hallo Erich,

folgender Code kommt in das schon vorhandene VBA-Modul der entsprechenden Tabelle:

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim oName As Name
 Dim rngR As Range
 Dim strR As String
 
 On Error Resume Next
 For Each oName In ThisWorkbook.Names
   Set rngR = Nothing
   Set rngR = oName.RefersToRange
   If Not rngR Is Nothing Then
     If Not Application.Intersect(Target, rngR) Is Nothing Then
       strR = strR & vbNewLine & oName.Name
     End If
   End If
 Next oName
 On Error GoTo 0
 
 Cancel = True
 
 If Len(strR) Then
   strR = "Die Zelle """ & Target.Address(0, 0) & """ ist in folgenden benannten Bereichen enthalten:" & strR
 Else
   strR = "Die Zelle """ & Target.Address(0, 0) & """ ist in keinem benannten Bereich enthalten."
 End If
 
 MsgBox strR
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sharky51
Top
#4
Hallo Uwe,

vielen Dank für diesen Code, er funktioniert so dass alle benannten Bereiche des Workbooks aufgelistet werden. nicht schlecht.
Das hilft mir aber nicht so ganz weiter.

Wissen möchte ich nur ob die aktuell doppelt angeklickte Zelle sich in einem "benannten Bereich" befindet und in welchem?

Hättest Du da noch eine Idee, bzw. wie Dein VBA-Code abgeändert werden müsste.

Vielen Dank!
Top
#5
(31.10.2015, 23:29)sharky51 schrieb: Wissen möchte ich nur ob die aktuell doppelt angeklickte Zelle sich in einem "benannten Bereich" befindet und in welchem?

Hallo Erich,

genau das macht der Code (bei mir).
Vielleicht habe ich das aber auch falsch verstanden. Dann wäre eine Beispieldatei von Dir sehr hilfreich. Wink

Gruß Uwe
Top
#6
Hallo Sharky,

wenn sich mehrere oder alle benannten Bereiche so überschneiden, dass es eine Zelle gibt, die in mehreren oder gar allen Bereichen enthalten ist, werden Dir auch mehrere oder alle Bereiche ausgegeben.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • sharky51
Top
#7
Hallo André,

danke für die Rückmeldung aber so wie ich das sehe trifft das nicht zu.
Es überschneiden sich keine Bereiche, zumindest kann ich es nicht feststellen wenn ich sie einzeln aktiviere.
Gäbe es eine Möglichkeit das elegant herauszufinden und aufzulisten/protokollieren?

Danke für die Hilfe!
Top
#8
Hallo Sharky,

Du könntest in Uwe's Code nach dieser Zeile:
Set rngR = oName.RefersToRange
das einfügen:
Debug.Print rngR.Address, rngR.Parent.Name

Dann bekommst Du im Direktfenster (musst Du eventuell über das Menü "Ansicht" aktivieren) die Adressen und Blattnamen ausgegeben und kannst prüfen, ob sich Bereiche überschneiden.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • sharky51
Top
#9
Hallo André

ok das hat mir jetzt ein wenig weitergeholfen.
Im Direktfenster werden alle Bereiche aufgelistet und sehe ich jetzt dass es keine Überschneidungen von Bereichen gibt.

Möchte aber trotzdem nochmals auf meine ursprügliche Frage zurückkommen.
Eine Auflistung aller Bereichsnamen benötige ich hier nicht.
Es soll nur der eine Bereichsname zurückgegeben werden von der aktuell doppelt angeklickten Zelle und die Zell-Adresse oder wenn es sich um verbundene Zellen handelt dann den Zellbereich.
Top
#10
Hallo Erich

Mein Beitrag #2 war übrigens ernst gemeint.
Und es läßt sich auch mit Macro-Recorder aufzeichnen.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  ActiveWindow.Zoom = 34
End Sub
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste