Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1180to1184
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

Workshhet_Chance als normale Sub

Workshhet_Chance als normale Sub
Klaus
Hallo Excelspezialisten,
ist es möglich, die Prozedur
Private Sub Worksheet_Change(ByVal Target _
As Range)
Dim Bereich As Range
Dim Wert
Wert = ActiveCell.Value
If Target.Column = 1 Then
Application.EnableEvents = False
Set Bereich = Range(Cells(2, 1), Cells(10, 1))
Wert = WorksheetFunction.CountIf(Bereich, Target.Value)
If Wert > 1 Or Not IsNumeric(Target.Value) Then
Target = ""
End If
Application.EnableEvents = True
Set Bereich = Nothing
End If
End Sub
so umzuwandeln, dass sie nicht in jeder Tabelle eingesetzt werden muss, um obige Prüfungen durchzuführen? Also nach Bedarf z.B. in einem Prüflauf abgerufen werden kann?
Danke vorab!
Gruß Klaus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Workshhet_Chance als normale Sub
20.10.2010 14:03:26
Rudi
Hallo,
sowas?
Sub ttx()
CheckCell Range("A3")
End Sub

Sub CheckCell(myCell As Range)
Dim Bereich As Range, Wert
If myCell.Column = 1 Then
Application.EnableEvents = False
Set Bereich = Range(Cells(2, 1), Cells(10, 1))
Wert = WorksheetFunction.CountIf(Bereich, myCell.Value)
If Wert > 1 Or Not IsNumeric(myCell.Value) Then
myCell = ""
End If
Application.EnableEvents = True
Set Bereich = Nothing
End If
End Sub

Gruß
Rudi
AW: Workshhet_Chance als normale Sub
20.10.2010 14:40:00
Klaus
Danke Rudi,
klappt! Du brachtest mich damit auf die Idee einen gesamten Bereich zu prüfen mit:
Sub ttx()
For Each Zelle In Range("A2:A10")
CheckCell ActiveCell
Next
End Sub

Sub CheckCell(myCell As Range)
Dim Bereich As Range, Wert
If myCell.Column = 1 Then
Application.EnableEvents = False
Set Bereich = Range(Cells(2, 1), Cells(10, 1))
Wert = WorksheetFunction.CountIf(Bereich, myCell.Value)
If Wert > 1 Or Not IsNumeric(myCell.Value) Then
myCell = ""
    Else
ActiveCell.Offset(1, 0).Select
End If
Application.EnableEvents = True
Set Bereich = Nothing
End If
End Sub
Funktioniert für alle Doppelte in dem Bereich! Oder kann man das "eleganter" bzw. muss man das VBA-gerechter handeln?
Ganz herzlichen Dank! Bin ja eigentlich schon zufrieden aber ich möchte auch dazulernen.
Gruß Klaus
Anzeige
AW: Workshhet_Chance als normale Sub
20.10.2010 15:08:41
Rudi
Hallo,
das würde ich eher so machen:
Sub ttx()
Dim rTest As Range, rZelle As Range
Set rTest = Range("A1:A10")
For Each rZelle In rTest
CheckCell rZelle, rTest
Next
Set rTest = Nothing
End Sub

Sub CheckCell(myCell As Range, rTest As Range)
Dim Wert
If myCell.Column = 1 Then
Application.EnableEvents = False
Wert = WorksheetFunction.CountIf(rTest, myCell.Value)
If Wert > 1 Or Not IsNumeric(myCell.Value) Then
myCell = ""
End If
Application.EnableEvents = True
End If
End Sub

Ohne Select/ Activate
Gruß
Rudi
Anzeige
AW: Workshhet_Chance als normale Sub
20.10.2010 17:03:00
Klaus
Hallo Rudi,
herzlichen Dank für die wahrlich profihafte Lösung!
Gruß Klaus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige