Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA; SelectionChange-Ereignis geht nicht





Frage

Hallo, VBA-Fans, Ich will erreichen, dass beim Aktivieren einer bestimmten Zelle innerhalb der Arbeitsmappe (z.B. durch Tabulatorbetätigung) ein Unterprogramm upr aufgerufen wird. Die Spaltennummer ist konstant , z.B. Column = 12. Die Zeilennummer rx hängt davon ab, in welcher Zeile der Spalte A sich die Variable Ax befindet. Mal ein Beispiel aus dem Modul meines VBA-Programms: . . ´Aktive Zelle aufsuchen, in der sich die Variable Ax befindet rx = 1 ´Integervariable Range("A1").Select Do While ActiveCell.Value <> Ax ActiveCell.Offset(1, 0) rx = rx+ 1 Loop ´rx ist die gesuchte Zeilennummer Im Objekt-Arbeitsblatt meiner Tabelle habe ich: Private Sub WorkSheet_SelectionChange(ByVal Target As Range) If Target.Column = 12 and Target.Row = rx Then upr End Sub Nichts passiert! Findet vielleicht das SelectionChange-Ereignis die Variable rx nicht, weil diese ja im Modul steht? Mit Target.Column =12 allein geht es, allerdings natürlich für alle Zeilen der Spalte. Es soll aber nur bei derjenigen Zeile funktionieren, in der Ax steht (siehe oben). Hat jemand einen Tip, wie ich das zum Laufen bringen kann? Gruß Queelun

Antwort 1 von coros

Hi Queelen,

kopiere mal Dein Makro in das VBA Projekt der Tabelle, in dem auch die SelectionCange Anweisung steht. Deklariere dann mit der Anweisung

Public rx As Integer

die Variable rx. Die Deklaration Public muss ganz am Anfang, also ganz oben in dem VBA Projekt stehen. Dann test mal. Eigentlich sollte es dann funktionieren.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Queelun

Hallo Coros,
Danke für Deinen Tipp. Ich brauchte aber noch einen weiteren externen Anstoß (von Monika Weber), um es hinzukriegen.
So geht es nun
auf der Modulebene

Public rx As Integer
Sub(xyz)
Programmzeilen
End sub

auf dem Codeblatt der Tabelle
die oben zitierte Ereignisprozedur.

Gruß von Queelun