PDA

Vollständige Version anzeigen : Wenn Zelle >0, dann andere Zelle "sperren"


knacko
28.02.2008, 10:02
Hallo,

ich habe wieder mal ein Problem. In einem Arbeitsblatt sollen die Zellen B1 und B2 überwacht werden. Sobald in B1 ein Wert vorhanden ist, soll B2 nicht mehr anwählbar sein. Das ganze soll umgekehrt auch funktionieren.

Ich habe mal einen code geschrieben:
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim fall As Integer
fall = 0
With Range("B1")
If .Value = "" Then Exit Sub
If .Value <> "" Then
fall = 1
End If
End With

With Range("B2")
If .Value = "" Then Exit Sub
If .Value <> "" Then
fall = 2
End If
End With



End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim fall As Integer

If fall = 1 Then
If Range("B2").Value <> "" Then Range("B1").Select
End If

If fall = 2 Then
If Range("B1").Value <> "" Then Range("B2").Select
End If

End Sub


Leider klappt dieser nicht ganz. Kann mir da jemand helfen?
Thx,
gruß
knacko

EarlFred
28.02.2008, 10:10
Hallo knacko,

das wird alleine deshalb nicht klappen, da die Variable "fall" ihren Wert nicht behalt. Sie müsste dafür als Public in einem allgemeinen Modul definiert werden, damit andere Prozeduren drauf zugreifen können.

Probier es mal so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [B1]) Is Nothing And [B2] <> "" Then
[B2].Select
End If
If Not Intersect(Target, [B2]) Is Nothing And [B1] <> "" Then
[B1].Select
End If
End Sub

Grüße
EarlFred

knacko
28.02.2008, 11:15
Hi,
danke dir, das hat geklappt.
Im Modul kann ich es so definieren?
---
Public blatt As Worksheet
Dim fall As Integer
----

EarlFred
28.02.2008, 12:06
Hallo Knacko,

wenn Du aus anderen Modulen oder Tabellenblättern drauf zugreifen willst, muss es "Public fall as integer" sein.

Grüße
EarlFred

knacko
29.02.2008, 07:21
Hi,
danke dir. Klappt alles prima.

gruß
knacko