ich stehe vor einem Rätsel. Die Sache ist etwas komplex, ich versuche es mal zu erklären:
ich arbeite (alles innerhalb einer Mappe) von der Tabelle Namens "Desktop" aus. Hier ist u.a. ein Button integriert (CMD13), der click darauf löst folgende sub aus:
Private Sub CMD13_Click()
'nach vorhandener Person suchen (in Tabelle "Personen")
modus = 13
With Personen
'If .AutoFilterMode = False Then .Range("A1").AutoFilter
'nicht benötigte Spalten in der Tabelle ausblenden
.Columns("J:AK").Hidden = True
.Protect AllowSorting:=True, AllowFiltering:=True
.Activate
End With
End Sub
Ich springe also in die entsprechend "vorbereitete" Tabelle "Personen". Hier ist ein sub hinterlegt, das auf die Auswahl einer bestimmten Zelle reagiert:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim adr_nr As Long
Dim pers_nr As Long
Select Case modus
Case 4
'case=4 ist die Filterung und Anzeige einer Adresse zugeordneter Personen (Button CMD4)
'in diesem Fall erfolgt keine Reaktion
Case 13
'case=13 ist die direkte Personensuche (Button CMD13)
'auf Spaltenauswahl achten, wenn eine Zelle ausgewählt wird
Select Case target.Column
Case 2
pers_nr = target.Value
adr_nr = target.Offset(0, -1).Value
'Tabelle "Personen" wieder in Ausgangszustand zurückversetzen
With Personen
.Range("B1").Select 'Cursor auf $B$1 zurücksetzen muss erfolgen, bevor Desktop wieder _
_
aktiviert wird
.Unprotect
.Columns.Hidden = False
If .FilterMode = True Then
.ShowAllData
End If
End With
'Ausgewählte Personennummer und zugehörige Adr_Nr auf Desktop übertragen
Desktop.Activate
Desktop.Range("B3").Value = adr_nr
End Select
End Select
End Sub
Die Variable modus ist eine globale Variable, steht also auf dem Wert 13. Hier reagiert die sub nur dann, wenn eine Zelle aus Spalte 2 der Tabelle ausgewählt wird (target.column = 2 -> case 2) und gibt die entsprechenden Werte zurück bzw. schreibt sie in "Desktop".
Oder besser soll - denn nun kommt mein Problem:
wenn ich das laufen lasse, kann ich in Tabelle "Personen" jede beliebige Zelle außerhalb der Spalte "B" anwählen, es erfolgt acuh korrekterweise keine Reaktion, da target.column ja nicht 2 ist.
Sobald ich irgendeine beliebige Zelle in Spalte 2 auswählen will (egal, ob per Mausklick oder per Cursor reinlaufen) springt mir der Cursor in Zelle B1. Das passiert wie gesagt einzig und allein in Spalte 2, die ich überwache.
Ein de facto identisches Makro mit gleichem Aufruf und Ablauf habe ich in einer anderen Tabelle dieser Arbeitsmappe laufen, dies funktioniert anstandslos. Wieso hier nicht?