title image


Smiley Worksheet_SelectionChange und Worksheet_Activate als Eventsteuerung
Bitte um Hilfe für Eventsteuerung von drei Sheets in einem Workbook.



Es soll bei Aufruf (Aktivierung) von Sheet3 festgestellt werden, ob vorher SheetA oder SheetB aktiv war, d.h. mit welchem vorher gearbeitet wurde. (Notwendig, um bestimmte Selection auf Sheet3 auf das "richtig" Sheet A oder B zu übertragen.



Ich habe angefangen mit nachstehenden VBA Code. Dabei bekomme ich allerdings

a) NOK: die Sheet3 Routine "Worksheet_Activate()" wird garnicht angesprochen (ich hatte erwartet, dass diese bereits bei Anklicken des Fensters anspringt).

b) OK: die Routine "Sub Worksheet_SelectionChange" wird angesprungen, wenn Spalte A oder B ausgewählt wird auch weiterverzweigen.



c) ???: Die "Deactivate"-Eventroutinen für SheetA und B sollen einfach eine Variable setzen, die ich dann bei Sheet3 abfragen will. Diese Routinenlaufen auch, dh. wenn von SheetA die Var "vorher" auf "A" gesetzt wurde, sehe ich in Sheet3 A1 "B". >>Merkwürdig<< ??

Somit bekomme ich nicht die richte Info über das "Herkunftsblatt", wenn Sheet3 "Sub Worksheet_SelectionChange" anläuft.



Wo ist der Bug ODER verstehe ich hier was grundsätzlich falsch ??



Danke vorab

Neandr





    ' ******************************************************

    '  Parameter Definition

    ' ******************************************************

            Public Const aBlatt = "A"

            Public Const bBlatt = "B"

            Public Const plBlatt = "PreislisteVK"



            Public vorher As String              ' zuletzt aktives Auftragsblatt



für Sheet3

    Private Sub Worksheet_Activate()

    '======================================================

            Range("A1").Value = vorher

    End Sub

    

    '======================================================

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    '======================================================

       '* Application.EnableEvents = False

    

        Range("A1").Value = vorher

    

        c = ActiveCell.Column

        If (ActiveCell.Column = 2) Or (ActiveCell.Column = 3) Then _

                a = a '***** nAuftragszeile

    

       '* Application.EnableEvents = True

    End Sub



für SheetA

    '============================================

    Private Sub Worksheet_Deactivate()          ' Sheet A

    '============================================

            vorher = aBlatt

    End Sub



für SheetB

    '============================================

    Private Sub Worksheet_Deactivate()          ' Sheet B

    '============================================

            vorher = bBlatt

    End Sub





Code eingefügt mit Syntaxhighlighter 4.0








Neandr	            //gW
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 - Build ID: 2007112718; 
TB version  2.0.0.9 (20071031)
jre6.0.04; MS Office 10 
Intel Pro/W LAN 2100 3B Mini PCI with WAP; 1&1 DSL mit Fritz!Box 7050/7150



geschrieben von


Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: