Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In einem definierten Berich nur eine Zelle ausw.

In einem definierten Berich nur eine Zelle ausw.
20.05.2015 10:46:11
r2d2
Hallo,
ich möchte, daß der Anwender in einem freigegebenen Bereich (B2:B20) nur eine Zelle mit einem "x" per Doppelklick markieren kann.
Folgenden Code habe ich:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim BER As String
BER = ("B2:B20")
On Error Resume Next
If Not Intersect(Target, Range(BER)) Is Nothing Then
Target = IIf(Target = "x", "", "x")
Cancel = True
End If
End Sub
Aber was muß ich verändern, damit in dem Bereich immer nur ein "x" eingetragen werden kann und wenn z.B. an anderer Stelle ein "x" eingegeben wird muß das vorherige verschwinden.
Danke.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In einem definierten Berich nur eine Zelle ausw.
20.05.2015 11:08:42
Rudi
Hallo,
so?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim BER As Range, bolX As Boolean
Set BER = Range("B2:B20")
If Not Intersect(Target, BER) Is Nothing Then
bolX = Target = "x"
BER.ClearContents
If Not bolX Then Target = "x"
Cancel = True
End If
End Sub

Gruß
Rudi

AW: In einem definierten Berich nur eine Zelle ausw.
20.05.2015 11:49:57
r2d2
Ja fast... ich habe zwei Bereicht und mit
Set BER = Range("B2:B20; F2:F20")
geht es nicht.

Set BER = Union(Range("B2:B20"), Range("F2:F20"))
20.05.2015 11:58:37
Rudi

AW: Set BER = Union(Range("B2:B20"), Range("F2:F20"))
20.05.2015 12:04:57
r2d2
Ja, doch noch nicht ganz, da beide Bereiche unabhängig voneinander sind.
Also dann doch diese Lösung:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim BER1 As Range
Dim BER2 As Range
Dim bolX As Boolean
Set BER1 = Range("C8:C55")
Set BER2 = Range("F8:F55")
If Not Intersect(Target, BER1) Is Nothing Then
bolX = Target = "x"
BER1.ClearContents
If Not bolX Then Target = "x"
Cancel = True
End If
If Not Intersect(Target, BER2) Is Nothing Then
bolX = Target = "x"
BER2.ClearContents
If Not bolX Then Target = "x"
Cancel = True
End If
End Sub
Oder?

Anzeige
AW: Set BER = Union(Range("B2:B20"), Range("F2:F20"))
20.05.2015 13:58:25
Daniel
Hi
bei mehrern Bereichen kannst du eine Schleife über die Bereiche erstellen, damit du nicht jeden Bereich einzieln ausprogrammieren musst:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim BER As Range
Dim bolX As Boolean
For Each BER In Range("C8:C55,F8:F55").Areas
If Not Intersect(Target, BER) Is Nothing Then
bolX = Target.Value = ""
BER.ClearContents
Target.Value = IIf(bolX, "x", "")
Cancel = True
End If
Next
End Sub

die einzelen Bereiche werden in der Range als Adresse mit Komma getrennt angegeben.
gruß Daniel

Anzeige
AW: Set BER = Union(Range("B2:B20"), Range("F2:F20"))
20.05.2015 15:16:20
r2d2
Und welche Variante ist jetzt die "schnellere" (ok, bei dem kleinen Bereich kaum spürbar) oder die "sauberere"?

AW: Set BER = Union(Range("B2:B20"), Range("F2:F20"))
20.05.2015 15:55:02
Daniel
Hi
sauber ist beides
bezüglich Geschwindigkeit sollte es keinen spürbaren unterschied geben.
entscheiden ist hier der Programmieraufwand für dich.
Gruß Daniel

AW: In einem definierten Berich nur eine Zelle ausw.
20.05.2015 11:53:45
r2d2
Ich habe es jetzt so gelöst:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim BER1 As Range
Dim BER2 As Range
Dim bolX As Boolean
Set BER1 = Range("C8:C55")
Set BER2 = Range("F8:F55")
If Not Intersect(Target, BER1) Is Nothing Then
bolX = Target = "x"
BER1.ClearContents
If Not bolX Then Target = "x"
Cancel = True
End If
If Not Intersect(Target, BER2) Is Nothing Then
bolX = Target = "x"
BER2.ClearContents
If Not bolX Then Target = "x"
Cancel = True
End If
End Sub

Anzeige
AW: In einem definierten Berich nur eine Zelle ausw.
20.05.2015 11:20:15
UweD
Hallo
so ?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim Ber As Range
Set Ber = Range("B2:B20")
On Error Resume Next
If Not Intersect(Target, Ber) Is Nothing Then
If WorksheetFunction.CountIf(Ber, "x") = 0 Then
Target = IIf(Target = "x", "", "x")
Else
MsgBox "x bereits vorhanden"
End If
Cancel = True
End If
End Sub

Gruß UweD

AW: In einem definierten Berich nur eine Zelle ausw.
20.05.2015 11:38:20
UweD
So lässt sich das eine x auch wieder entfernen
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim Ber As Range, Anz As Single
Set Ber = Range("B2:B20")
On Error Resume Next
If Not Intersect(Target, Ber) Is Nothing Then
Anz = WorksheetFunction.CountIf(Ber, "x")
If Anz = 0 Or (Target = "x" And Anz = 1) Then
Target = IIf(Target = "x", "", "x")
Else
MsgBox "anderes x bereits vorhanden"
End If
Cancel = True
End If
End Sub

Anzeige
AW: In einem definierten Berich nur eine Zelle ausw.
20.05.2015 11:45:28
r2d2
Im Bereich B2:B20 soll immer nur ein "x" oder gar nichts stehen. Ist schon ein "x" vorhanden, so soll dies bei anklicken einer anderen Zelle verschwinden und in der angeklickten Zelle erscheinen.

Mit Doppelklick markiert man keine Zelle, ...
20.05.2015 13:04:38
Luc:-?
…R2D2,
sondern editiert sie. Das solltest du als SuperRobot aber wissen… ;-]
Gruß, Luc :-?
Besser informiert mit …

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige