ich habe folgendes Problem:
In Arbeitsblatt B habe ich in einigen Zellen Zahlen stehen welche ich
in einer anderen Zelle (E16) summiert habe. Im Arbeitsblatt A habe ich
mit der Formel "=B!E16" das Ergebnis der Zelle E16 auf Arbeitsblatt B
in Zelle A1 stehen.
Kann man es einstellen, dass man im Arbeitsblatt A nun z. B. per
Doppelklick auf die Zelle A1 direkt auf Zelle E16 auf Arbeitsblatt B
springt um die dort die Zusammensetzung dieser Summe anzusehen?
Vielen Dank für die Hilfe!!!
Ingo Jansen schrieb:
>
> In Arbeitsblatt B habe ich in einigen Zellen Zahlen stehen welche ich
> in einer anderen Zelle (E16) summiert habe. Im Arbeitsblatt A habe ich
> mit der Formel "=B!E16" das Ergebnis der Zelle E16 auf Arbeitsblatt B
> in Zelle A1 stehen.
>
> Kann man es einstellen, dass man im Arbeitsblatt A nun z. B. per
> Doppelklick auf die Zelle A1 direkt auf Zelle E16 auf Arbeitsblatt B
> springt um die dort die Zusammensetzung dieser Summe anzusehen?
Kopiere die folgende Prozedur in den Code-Teil der betreffenden Mappe(n):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
If Target.HasFormula = False Or VBA.InStr(1, Target.Formula, "!") = 0 Then
Exit Sub
Dim strZiel As Variant
strZiel = VBA.Split(Right(Target.Formula, Len(Target.Formula) - 1), "!")
Application.Goto Worksheets(strZiel(0)).Range(strZiel(1))
End Sub
und teste entsprechend.
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
Private Sub Worksheet_BeforeDoubleClick(ByVal _
Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
MsgBox Sheets("Tabelle2").Range("E16").Formula, _
, "Formel in E16"
End If
End Sub
Den Namen der Tabelle mußt du anpassen.
Dieser Code zeigt dir die Formel in E21 in einer
MessageBox an.
Gruß
stefan
>-----Originalnachricht-----
>.
>
vielen Dank für die beiden schnellen Antworten. Leider bin ich absolut
kein Experte mit VBA und habe prompt auch schon ein Problem:
Wenn ich auf das Tabellenblatt von dem ich abspringen möchte mit der
rechten Maustaste klicke und dann Code anzeigen anklicke öffnet sich
das VBA Fenster. Darin steht bereits folgendes:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
End Sub
Ist die genannte Prozedur davor, danach, dazwischen oder sogar
stattdessen einzufügen?
Bei meinen Versuchen bin ich weiterhin auf folgendes Problem gelaufen:
Prozedur von Thomas Ramel:
Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden....
die ersten beiden Zeilen sind gelb markiert und haben eine Pfeil am
Rand und weiterin ist in der 6. Zeile das Wort .Split blau markiert
Vielen Dank und schonmal ein schönes Wochenende!!
MfG
Ingo
Ingo Jansen schrieb:
>
> Wenn ich auf das Tabellenblatt von dem ich abspringen möchte mit der
> rechten Maustaste klicke und dann Code anzeigen anklicke öffnet sich
> das VBA Fenster. Darin steht bereits folgendes:
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
>
> End Sub
>
> Ist die genannte Prozedur davor, danach, dazwischen oder sogar
> stattdessen einzufügen?
In diesem Falle: stattdessen!
Lösche die Zeilen und kopiere den geposteten Code in dieses Fenster.
> Prozedur von Thomas Ramel:
>
> Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden....
>
> die ersten beiden Zeilen sind gelb markiert und haben eine Pfeil am
> Rand und weiterin ist in der 6. Zeile das Wort .Split blau markiert
Tja; hier laufen wir in einen Versionskonflikt.
Du hast leider deine Excel-Versin nicht angegeben. Ich nehme nun an, es ist
xl97. Der Befehl 'Split' steht erst seit xl97 zur Verfügung.
Ich wollte die Prozedur schon umschrieben, habs dann aber (leider) bleiben
lassen.
Hier die angepasste Version, die auch unter xl97 laufen sollte:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
If Target.HasFormula = False Or VBA.InStr(1, Target.Formula, "!") = 0 Then
Exit Sub
Dim strBlatt As String, strRange As String, intI As Integer
intI = InStr(1, Target.Formula, "!")
strBlatt = Mid(Target.Formula, 2, intI - 2)
strRange = Mid(Target.Formula, intI + 1, Len(Target.Formula))
Application.Goto Worksheets(strBlatt).Range(strRange)
End Sub
Thomas Ramel schrieb:
> Der Befehl 'Split' steht erst seit xl97 zur Verfügung.
Hier wollte ich latürnich xl2000 schreiben ;-)
Grüezi Thomas,
vielen Dank. Es gab zwar noch einen Fehler da das End If fehlte.
Konnte ich aber mit probieren rausbekommen.
Kann ich so unverschämt sein und noch nach einer Möglichkeit fragen um
von der durch Doppelklick erreichten Zelle wieder auf die
ursprüngliche Zelle zu gelangen? Und kann man beide Funktionen auf
einem Arbeitsblatt kombinieren?
Schönes Wochenende!
MfG
Ingo
Ingo Jansen schrieb:
>
> vielen Dank. Es gab zwar noch einen Fehler da das End If fehlte.
> Konnte ich aber mit probieren rausbekommen.
Solange 'If' und 'Then Exit Sub' in derselben Zeile stehen, kannst Du auf
'End If' verzichten. Das ist die Kurzschreibweise, die auch in der Hilfe
beschrieben wird.
Vermutlich wurde die Zeile umgebrochen und verursachte dadurch den Fehler.
Bei mir lief die Prozedur so ohne Fehler; ich habe sie dann 1:1 in den
Beitrag kopiert.
> Kann ich so unverschämt sein und noch nach einer Möglichkeit fragen um
> von der durch Doppelklick erreichten Zelle wieder auf die
> ursprüngliche Zelle zu gelangen?
Tja, das war ja zu befürchten. ;-)
*Musst* Du denn in die besagte Zelle springen, oder reicht es dir, wenn
z.B. die Formel jener Zelle in einer MessageBox ausgegeben wird?
Das könntest Du wie folgt haben:
Ersetze die Zeile 'Application.Goto....' durch die folgenden:
MsgBox "Die Formel der verknüpften Zelle lautet" & Chr(13) _
& Worksheets(strBlatt).Range(strRange).FormulaLocal
Das Zurückspringen ist nicht so einfach zu lösen, an Ideen fehlt es
allerdings nicht. Aber wenn es nicht notwendig ist, muss sich niemand 'ein
Bein ausreissen'.
vielen Dank für Deine Antwort! Sorry wegen dem "End If", du hattest
Recht, dass die Zeile umgebrochen war und es daher zu dem Fehler kam.
Wäre schon schön, wenn das mit dem Springen in die "Start-Zelle"
klappen würde. Ich hoffe, dass Du mich richtig verstanden hast. Ich
habe zwei, oder mehrere Arbeitsblätter. Mit Hilfe Deiner ersten
Prozedur springe ich per Doppelklick von Tabelle A auf die jeweilige
verknüpfte Zelle in Tabelle B. Mit der neuen Prozedur würde ich gerne
wieder auf die "Absprungzelle" in der Tabelle A zurück springen. Dies
erreiche ich manuell indem ich auf Extras / Dedektiv / Sprung zum
Nachfolger klicke.... Wenn das per Doppelklick zu Aufwändig ist, geht
es dann anders einfacher??
Aber bitte kein Bein ausreissen ;-))
Danke und fr. Grüße
Ingo Jansen
Ingo Jansen schrieb:
>
> Wäre schon schön, wenn das mit dem Springen in die "Start-Zelle"
> klappen würde. Ich hoffe, dass Du mich richtig verstanden hast. Ich
> habe zwei, oder mehrere Arbeitsblätter. Mit Hilfe Deiner ersten
> Prozedur springe ich per Doppelklick von Tabelle A auf die jeweilige
> verknüpfte Zelle in Tabelle B. Mit der neuen Prozedur würde ich gerne
> wieder auf die "Absprungzelle" in der Tabelle A zurück springen. Dies
> erreiche ich manuell indem ich auf Extras / Dedektiv / Sprung zum
> Nachfolger klicke.... Wenn das per Doppelklick zu Aufwändig ist, geht
> es dann anders einfacher??
Zeichne die Abforlge über den Detektiv per Makro-Recorder auf und weise das
Makro dem Worksheet_BeforeDoubleClick-Ereignis zu. Analog der ersten
Prozedur, einfach im anderen Tabellenblatt.
Probleme gibt es, wenn mehrere Zellen auf diese verweisen, oder die Zelle
auf demselben Tabellenblatt liegt, wie die erste.
Ingo Jansen schrieb:
>
> Wäre schon schön, wenn das mit dem Springen in die "Start-Zelle"
> klappen würde. Ich hoffe, dass Du mich richtig verstanden hast. Ich
> habe zwei, oder mehrere Arbeitsblätter. Mit Hilfe Deiner ersten
> Prozedur springe ich per Doppelklick von Tabelle A auf die jeweilige
> verknüpfte Zelle in Tabelle B. Mit der neuen Prozedur würde ich gerne
> wieder auf die "Absprungzelle" in der Tabelle A zurück springen.
>
> Aber bitte kein Bein ausreissen ;-))
Keine Angst, das Bein ist noch dran ;-)
Hier eine Möglickeit mit Userform:
Im Tabellenblatt
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
If Target.HasFormula = False Or VBA.InStr(1, Target.Formula, "!") = 0 Then
Exit Sub
Dim strBlatt As String, strRange As String, intI As Integer
intI = InStr(1, Target.Formula, "!")
strBlatt = Mid(Target.Formula, 2, intI - 2)
strRange = Mid(Target.Formula, intI + 1, Len(Target.Formula))
Set oldCell = Target
Application.Goto Worksheets(strBlatt).Range(strRange)
Load UserForm1
UserForm1.Show
End Sub
In ein allgemeines Modul:
Public oldCell As Range
In eine Userform mit einem Commandbutton namens CommandButton1:
Private Sub CommandButton1_Click()
Me.Hide
Unload Me
Application.Goto oldCell
Set oldCell = Nothing
End Sub
Mappe schliessen, wieder öffnen und ausprobieren.
Hallo Thomas,
da bin ich nochmal....
habe mal versucht das ganze umzusetzen. Leider funktioniert es nicht.
Sollte da jetzt nicht ein Button erscheinen auf den ich klicken kann
um auf die verknüpfte Zelle auf dem ersten Blatt zu springen? Wenn ich
aber im VBA Editor bei dem User Form auf Testen klicke erscheint ein
Button. Wenn ich den dann jedoch drücke kommt folgende Fehlermeldung:
Laufzeitfehler '5'. Unzulässiger Prozeduraufruf oder ungültiges
Argument.
Kannst Du mir nochmal helfen?
Danke und ein schönes Wochenende!
Ingo
Ingo Jansen schrieb:
>>
> habe mal versucht das ganze umzusetzen. Leider funktioniert es nicht.
> Sollte da jetzt nicht ein Button erscheinen auf den ich klicken kann
> um auf die verknüpfte Zelle auf dem ersten Blatt zu springen? Wenn ich
> aber im VBA Editor bei dem User Form auf Testen klicke erscheint ein
> Button. Wenn ich den dann jedoch drücke kommt folgende Fehlermeldung:
> Laufzeitfehler '5'. Unzulässiger Prozeduraufruf oder ungültiges
> Argument.
Du verwendest wie bisher den Doppelklick um zur Vorgäner-Zelle zu springen.
Wenn du bei der Zelle angekommen bist erschient der Button.
Beim Klick darauf springst Du zur Ausgangszelle zurück.
> Du verwendest wie bisher den Doppelklick um zur Vorgäner-Zelle zu springen.
> Wenn du bei der Zelle angekommen bist erschient der Button.
> Beim Klick darauf springst Du zur Ausgangszelle zurück.
das funktioniert bei mir nicht! Leider! Ich glaube wir sollten das
Thema abschliessen. Vielen Dank für Deine Hilfe!!!!
MfG
Ingo
Ingo Jansen schrieb:
Welche Excel-Versin verwendest Du?
Bei mir mit xl2000 funktionerte es ohne probleme, solange der Sprung auf
ein anderes Tabellenblatt führt.
Es *muss* gehen!
Hier der Link zu einer Demo-Mappe:
http://users.quick-line.ch/ramel/Demo-Daten/SPRUNG_ZUM_VORG%c4NGER_UND_R%dcCKSPRUNG.xls
leider habe ich Excel 97!!
MfG
Ingo
Ingo Jansen schrieb:
> Hallo Thomas,
>
> leider habe ich Excel 97!!
Kannst Du genau(er) einkreisen, wo es hängt?
> Grüezi Ingo
>
> Ingo Jansen schrieb:
> > Hallo Thomas,
> >
> > leider habe ich Excel 97!!
>
> Kannst Du genau(er) einkreisen, wo es hängt?
hatte schonmal versucht es zu beschreiben...
> habe mal versucht das ganze umzusetzen. Leider funktioniert es nicht.
> Sollte da jetzt nicht ein Button erscheinen auf den ich klicken kann
> um auf die verknüpfte Zelle auf dem ersten Blatt zu springen? Wenn ich
> aber im VBA Editor bei dem User Form auf Testen klicke erscheint ein
> Button. Wenn ich den dann jedoch drücke kommt folgende Fehlermeldung:
> Laufzeitfehler '5'. Unzulässiger Prozeduraufruf oder ungültiges
> Argument.
Hilft das weiter??
Danke und Gruß
Ingo