Hallo ins Forum,
ich brauche Eure Hilfe, denn ich bin kurz vor dem Verzweifeln. Mein Problem ist, dass ich in Excel mehrere Bezüge auf eine andere Datei dynamisieren möchte. Diese "baue" ich mir über die Text-Funktionen in Excel zusammen und lasse dann die Ergebnisse mittels Makro als Wert in eine andere Zellen kopieren.
Soweit funktioniert auch alles, nur dass leider als Ergebnis zunächst "#name?" angezeigt wird. Nach dem Öffnen der Zelle mit F2 und Enter wird der Berzug aktiv und alles ist (eigentlich) ok. Ich möchte nun aber nicht immer jede Zelle auf diese Art von Hand aktualisieren, sondern dies ebenfalls dem Makro überlassen.
Die grundlegende Syntax habe ich im Netz an vielen Stellen gefunden, nur leider funktioniert sie bei mir nicht richtig. Warum auch immer, erfolgt die Aktualisierung in meinem Arbeitsblatt nämlich nicht an der Stelle, die ich mit der Range-Anweisung vorgebe, sondern dort, wo der Cursor nach Ablauf der gesamten Prozedur steht !?!?
Zu allem Überfluss bewirkt die Ausführung des Codes auch noch, dass mein Numerik-Feld jedes Mal "umgeschaltet" wird (-> von "Ein" auf "Aus", bzw. von "Aus" auf "Ein"). So, genug der Vorrede, hier der Code:
Option Explicit
Sub ComboBox1_Change()
Dim rngAktiveZelle As Range
Dim strExtPfad As String
Application.ScreenUpdating = False
' Position der aktiven Zelle merken
Set rngAktiveZelle = ActiveWindow.ActiveCell
' Ausgewählten Wert der Auswahlbox in Zelle V23 speichern
Range("V23") = ComboBox1.Value
Range("V24").Calculate
' aktualisierte Formel als Wert/Text nach W24 kopieren und dann in Variable strExtPfad speichern
ActiveSheet.Range("W24") = ActiveSheet.Range("V24").Value
strExtPfad = Range("W24").Value
' Formeln mit "Suchen und Ersetzen" aktualisieren
Range("W27:W28").Replace What:="*report", Replacement:=strExtPfad
Sim_F2_a
Range("Q62:Q64").Replace What:="*report", Replacement:=strExtPfad
Sim_F2_b
' ursprüngliche aktive Zelle wieder auswählen
rngAktiveZelle.Select
Application.ScreenUpdating = True
End Sub
Sub Sim_F2_a()
Dim objZelleF2a As Object
Range("W27:W28").Select
For Each objZelleF2a In Selection
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next objZelleF2a
End Sub
Sub Sim_F2_b()
Dim objZelleF2b As Object
Range("Q62:Q64").Select
For Each objZelleF2b In Selection
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next objZelleF2b
End Sub
Mit Suchen/Ersetzen wird der Pfad auf eine andere externe Quelle geändert. Danach sollte der jeweilig Aufruf für den betroffenen Bereich die Funktion "F2" und "ENTER" ausführen. Und da hapert es dann leider ...
Ich hoffe, jemand hat eine Idee, wo mein Fehler liegt.
Schon mal vielen Dank
Stefan