Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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

Userform und Auditpfeile

Userform und Auditpfeile
21.05.2009 21:58:57
P.Mackes
Hallo,
ich habe mir eine Userform gebaut, die von der aktiven Zelle alle Precedents und Dependents anzeigt und auch zu diesen springen kann.
Der relevante Code für die Listbox und Dependenprozedur sehen wie folgt aus:

Private Sub TraceDependents()
Application.ScreenUpdating = False
On Error Resume Next
Dim iAddressA As String
Dim UniqueValuesA As New Collection
Dim iArrowA As Integer, iLinkA As Integer
Dim CellA As String, Sheeta As String, WorkbookA As String
Set OriginA = ActiveCell
OriginA.ShowDependents
For iArrowA = 1 To 200
For iLinkA = 1 To 200
Err = 0
Set oDepeA = OriginA.NavigateArrow(False, iArrowA, iLinkA)
CellA = oDepeA.Address
Sheeta = oDepeA.Parent.Name
WorkbookA = oDepeA.Parent.Parent.Name
iAddressA = "[" & WorkbookA & "]" & Sheeta & "!" & CellA
UniqueValuesA.Add iAddressA, CStr(iAddressA)
If Err  0 Then Exit For
Next
Next
Me.lbTrace.RowSource = ""
For Each Item In UniqueValuesA
Me.lbTrace.AddItem Item, 0
Next Item
Me.lbTrace.ListIndex = 0
Application.ScreenUpdating = True
End Sub



Private Sub lbTrace_Click()
Dim iSeg1 As Integer, iSeg2 As Integer
Dim iCell As String, iSheet As String, iWorkbook As String
Item = lbTrace.Value
iSeg1 = Application.WorksheetFunction.Find("]", Item)
For i = 1 To Len(Item)
iWorkbook = Mid(Item, 2, iSeg1 - 2)
Next i
iSeg2 = Application.WorksheetFunction.Find("!", Item)
For i = 1 To Len(Item)
iCell = Mid(Item, iSeg2 + 1, i)
Next i
For i = 1 To Len(Item)
iSheet = Mid(Item, Len(iWorkbook) + 3, Len(Item) - Len(iWorkbook) - Len(iCell) - 3)
Next i
Workbooks(iWorkbook).Activate
Worksheets(iSheet).Select
Range(iCell).Select
End Sub


Der Code funktoniert so auch einwandfrei.
Jetzt habe ich folgendes Problem. In der Listbox werden mit dem Code immer Workbookname, Sheetname und Zelle angezeigt. Eigentlich soll der Workbookname aber nur dann angegeben werden, wenn der Link auch tatsächlich zu einem anderen Workbook geht. Befindet er sich im selben Workbook, reicht die Angabe Sheet+Zelle aus.
Ich habe schon echt eine Menge versucht den Code umzubauen, aber bin irgendwo in einer Sackgasse, wo ich nicht mehr weiß wie ich das hinkriege.
Ich weiß, dass es eine Menge Code ist, aber vielleicht fällt ja jemandem durch gezieltes Hinschauen eine Lösung ein.
Sofern das eher hilft, kann ich bei Bedarf auch ein Workbook mit dem gesamten Code uppen.
Gruß, Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Userform und Auditpfeile
21.05.2009 22:13:51
Daniel
Hi
das müsste doch eigentlcih so funktionieren (anstelle von " iAddressA = "[" & WorkbookA & "]" & Sheeta & "!" & CellA" einfügen):

if WorkbookA = Activeworkbook.Name then
iAddressA  =  Sheeta & "!" & CellA
else
iAddressA  = "[" & WorkbookA & "]"  & Sheeta & "!" & CellA
End if


Gruß, Daniel

AW: Userform und Auditpfeile
21.05.2009 23:00:36
P.Mackes
leider ist es nicht so einfach und führt immer in folgender Zeile zu einem Fehler:
iSeg1 = Application.WorksheetFunction.Find("]", Item)
dort müsste ich dann auch verschiedene if statement setzen...daran haperts im moment :D
Anzeige
AW: Userform und Auditpfeile
21.05.2009 23:07:04
Daniel
Hi
du kannst statt Worksheetfunction.Find die Funktion INSTR verwenden, die ergibt keinen Fehler, wenn der Suchstring nicht gefunden wird, sondern nur den Wert 0
iSeg1 =Instr(Item, "]")
Gruß, Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige