VBA Sheet aktivieren
#1
Hallo, 
ich habe eine Frage zu einem VBA-Code. Dieser soll jedes mal wenn man das Sheet "Blatt 1" verlässt aus einem anderen Sheet "Blatt 2" bestimmte Daten abgreifen.

Ursprünglich hab ich diese Funktion beim schließen der Datei ausführen lassen, da hat es auch funktioniert nur beim wechseln der Sheets scheint es Probleme zu geben.

Code steht in Blatt 1.

Code:
Private Sub Worksheet_Deactivate()
'1) Retrive log data:

           Application.ScreenUpdating = False
           Worksheets("Blatt 2").Activate

           
           Set n = Sheets("Blatt 2").Range("A" & Sheets("Blatt 2").Cells(Rows.Count, 1).End(xlUp).Row)
           If Range("A3").Value <> n.Value Or Range("B3").Value <> n.Value Or Range("C3").Value <> n.Value Or Range("D3").Value <> n.Value Or Range("E3").Value <> n.Value Or Range("F3").Value <> n.Value Then

               n.Offset(1) = Range("A3").Value
               n.Offset(1, 1) = Range("B3").Value
               n.Offset(1, 2) = Range("C3").Value
               n.Offset(1, 3) = Range("D3").Value
               n.Offset(1, 4) = Range("E3").Value
               n.Offset(1, 5) = Range("F3").Value

            End If
            Application.ScreenUpdating = True
End Sub

Was momentan funktioniert: Der Code greift zwar Daten aus den richtigen Zellen ab, aber nur aus dem Sheet "Blatt 1", er scheint nicht auf das benötigte "Blatt 2" zu wechseln.

Hat jemand eine Idee woran das liegen könnte?
Danke und Gruß.
Top
#2
Hallo,

Code:
            n.Offset(1) = Range("A3").Value

das Range bezieht sich auf das Blatt in dem der Code steht und das scheint bei dir das Blatt1 zu sein. Entweder

Code:
            n.Offset(1) = n.Range("A3").Value

oder

Code:
            n.Offset(1) = ActiveSheetRange("A3").Value

könnte das Problem lösen.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • diving_excel
Top
#3
Hallo,

warum willst du überhaupt Blatt2 aktivieren? Ich als Anwender wäre ein bisschen verärgert, wenn ich Blatt 3 öffnen will und auf Blatt 2 lande...
Top
#4
Danke werde ich gleich mal versuchen.

In Blatt 1 wird ein Bericht eingeladen in dem Zahlen stehen. Dieser ist sehr umfangreich und muss noch verdichtet werden. Wenn sich die Zahlen im Bericht ändern soll "Blatt 2" aufgerufen werden und die "Datenbank" aktualisiert werden, da diese Datenbank ein paar Grafiken mit Zahlen füttert. 

Um sicher zu gehen dass die Grafiken immer die neusten Werte erhalten habe ich gedacht dass es Sinn macht die Werte immer dann zu aktualisieren wenn ein neuer Bericht eingeladen wird, was ja passiert wenn Blatt 1 ("Bericht") geöffnet und dann verlassen wird.

Werd am Ende vom Code noch sowas wie aktivieren des Start sheets oder so anfügen, dass man nicht in dieser Datenbank landet.

Ich weiß etwas umständlich, aber gut - arbeite erst seit kurzem mit VBA - man tut was man (nicht)kann :D
Top
#5
Hat funktioniert, danke für die Hilfe!

Gruß
Top


Gehe zu:


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