Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
884to888
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
884to888
884to888
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheet_Change auch bei Mehrfachauswahl und Änd.

Worksheet_Change auch bei Mehrfachauswahl und Änd.
17.07.2007 09:11:08
Peter
Guten Tag
In einer Tabelle habe ich nachfolgenden Code hinterlegt. Es gibt 7 Felder, die bestimmen, wie 7 andere Tabellen benannt werden. Wenn ich die Felder einzeln ändere, klappt das prima.
Wenn ich beispielsweise alle Felder (benannte Zellen, class1, class2, class3, class4, class5, class6 und class7) markiere und lösche, passiert nichts. Es sollte jedoch so sein, dass auch bei einer Mehrfachauswahl (mehrere oder alle dieser Felder) und Änderung der Zelleinträge die Anpassung erfolgt. In diesem Fall müssten die Tabellen umbenannt werden in "frei 1", "frei 2", "frei 3", "frei 4", "frei 5", "frei 6" und "frei 7".
Wie muss ich den Code anpassen, dass dies so funktioniert.
Danke für jede Hilfe.
Peter

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fail
If Target.Address = Range("class1").Address And Len(Range("class1")) = 1 Then Tabelle11.Name =  _
Target. _
Text
If Target.Address = Range("class2").Address And Len(Range("class2")) = 1 Then Tabelle12.Name =  _
Target. _
Text
If Target.Address = Range("class3").Address And Len(Range("class3")) = 1 Then Tabelle13.Name =  _
Target. _
Text
If Target.Address = Range("class4").Address And Len(Range("class4")) = 1 Then Tabelle14.Name =  _
Target. _
Text
If Target.Address = Range("class5").Address And Len(Range("class5")) = 1 Then Tabelle15.Name =  _
Target. _
Text
If Target.Address = Range("class6").Address And Len(Range("class6")) = 1 Then Tabelle16.Name =  _
Target. _
Text
If Target.Address = Range("class7").Address And Len(Range("class7")) = 1 Then Tabelle17.Name =  _
Target. _
Text
Exit Sub
Fail:
MsgBox ("Doppelte Namen sind nicht erlaubt!"): Target = ""
End Sub


15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change auch bei Mehrfachauswahl und Änd.
17.07.2007 09:27:00
Rudi
Hallo,
versuch mal:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RngC As Range
On Error GoTo Fail
For Each RngC In Target.Cells
Select Case RngC.Address
Case Range("class1").Address
If Len(RngC) 


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Worksheet_Change auch bei Mehrfachauswahl und Änd.
17.07.2007 22:18:10
Peter
Hallo Rudi
Vielen Dank für den Code.
Ich habe noch zwei Mal End Select (vor Case Range("class2") und Case Range("class6"))zugefügt, da ich den Fehlermeldungen entsprechen annehmen musste. dass diese dort fehlen.
Dann passiert allerdings beim ändern der Zellen nichts in Bezug auf die Tabellennamen.
Komischerweise wird mir dann in der Arbeitsmappe die Formeln, in der meine nachfolgende UDF enthalten ist, nicht mehr ausgewertet (Zweck: Ergebnis des 1 Arguments, das kein Fehler ergibt, wird zurückgegeben).

Public Function KEINFEHLER2(Arg1 As Variant, Arg2 As Variant, Optional Arg3 As Variant) As  _
Variant
If IsError(Arg1) Then
If IsMissing(Arg3) Then
KEINFEHLER2 = Arg2
Else
If IsError(Arg2) Then KEINFEHLER2 = Arg3 Else KEINFEHLER2 = Arg2
End If
Else
KEINFEHLER2 = Arg1
End If
End Function


Hallo Rainer
Ich bin sehr beeindruckt und muss mir das ganze mal zu Gemüte führen.
Ich habe den ganzen Code mal Copy / Paste übernommen. Irgend ein kleines Problem besteht noch, und zwar kommt jedes Mal, wenn ich in ein Feld einen neuen Namen eingebe kommt di eMeldung, dass der Name schon vergeben ist.
Zudem handelt es sich bei der Tabelle mit class1, class2, class 3, etc. um ein Arbeitsblatt, wo verschiedene andere Eingaben erfolgen müssen. Tabellennamen sollen nur geändert werden, wenn class1, class2, etc. angewählt und eine Eingabe erfolgt.
Da der ursprüngliche Code grundsätzlich läuft, habe ich mir überlegt, ob dieser Code nicht einfach mit einer Ereignisabfrage erweitert werden kann, die bewirkt, dass bei einer Mehrfachauswahl der mit Class1, Class2, etc. benannten Felder die Mitteilung kommt, dass die Felder nur einzeln bearbeitet werden sollen und dann Class1 angewählt wird (vgl. auch die Rückmeldung an Rainer).
Freundlicher Gruss, Peter
Gruss, Peter

Anzeige
AW: Worksheet_Change auch bei Mehrfachauswahl und
17.07.2007 10:29:33
Ramses
Hallo Peter
das ganze ist sehr trickreich, da sowohl die Auswahl einer Zelle wie auch die Aktion bei Auswahl mehrer Zellen geprüft werden muss.
Daher ist der zu verwendende Code sehr umfangreich geworden.
Kopiere den ganzen Code in das Klassenmodul deiner Tabelle.
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
    '(C) Ramses
    Dim myC As Range, rngCheck As Boolean
    Dim myError As Integer
    Dim faultCell As Range
    rngCheck = False
    'Ereignisse abschalten, da sonst eine Endlosschleife generiert wird
    Application.EnableEvents = False
    myError = 0
    MsgBox Selection.Cells.Count
    On Error GoTo ErrorExit
    'Zählen wieviele Zellen betroffen sind
    'Einzelzelle abarbeiten
    If Selection.Cells.Count = 1 Then
        'Aktuelle Zelle abarbeiten
        'ob im richtigen Bereich
        Set faultCell = Target
        If RangeCheck(Target) = True Then
            If NameCheck(Target) = False Then
                MsgBox "Die Zelle: " & Target.Address & " enthält einen nicht zulässigen Dateinamen", vbCritical + vbOKOnly, "Fehler"
                Exit Sub
            End If
            Select Case Target.Address
                Case Range("Class1").Address
                    myError = 1
                    If Len(myC) < 1 Then Tabelle11.Name = "frei 1"
                    If Len(myC) >= 1 Then Tabelle11.Name = myC.Text
                Case Range("Class2").Address
                    myError = 2
                    If Len(myC) < 1 Then Tabelle12.Name = "frei 2"
                    If Len(myC) >= 1 Then Tabelle12.Name = myC.Text
                Case Range("Class3").Address
                    myError = 3
                    If Len(myC) < 1 Then Tabelle13.Name = "frei 3"
                    If Len(myC) >= 1 Then Tabelle13.Name = myC.Text
                Case Range("Class4").Address
                    myError = 4
                    If Len(myC) < 1 Then Tabelle14.Name = "frei 4"
                    If Len(myC) >= 1 Then Tabelle14.Name = myC.Text
                Case Range("Class5").Address
                    myError = 5
                    If Len(myC) < 1 Then Tabelle15.Name = "frei 5"
                    If Len(myC) >= 1 Then Tabelle15.Name = myC.Text
                Case Range("Class6").Address
                    myError = 6
                    If Len(myC) < 1 Then Tabelle16.Name = "frei 6"
                    If Len(myC) >= 1 Then Tabelle16.Name = myC.Text
                Case Range("Class7").Address
                    myError = 7
                    If Len(myC) < 1 Then Tabelle17.Name = "frei 7"
                    If Len(myC) >= 1 Then Tabelle17.Name = myC.Text
            End Select
            GoTo ErrorExit
        Else
            myError = 8
            GoTo ErrorExit
            'oder alternativ bei Änderung einer anderen Zelle
            'und wenn keine Meldung gewünscht wird
            'Exit Sub
        End If
    End If
    'Mehrfach Auswahl abarbeiten
    If RangeCheck(Selection) = False Then
        'Rückgängig machen der letzten Aktion
        'da der gesamte Prozess einer Mehrfachselektion nur
        'bei der korrekten Auswahl der Zellen stattfinden kann
        Application.Undo
        myError = 8
        GoTo ErrorExit
    End If
    For Each myC In Selection
        If NameCheck(myC) = False Then
            MsgBox "Die Zelle: " & myC.Address & " enthält einen nicht zulässigen Dateinamen", vbCritical + vbOKOnly, "Fehler"
            Exit Sub
        End If
        Set faultCell = myC
        Select Case myC.Address
            Case Range("Class1").Address
                myError = 1
                If Len(myC) < 1 Then Tabelle11.Name = "frei 1"
                If Len(myC) >= 1 Then Tabelle11.Name = myC.Text
            Case Range("Class2").Address
                myError = 2
                If Len(myC) < 1 Then Tabelle12.Name = "frei 2"
                If Len(myC) >= 1 Then Tabelle12.Name = myC.Text
            Case Range("Class3").Address
                myError = 3
                If Len(myC) < 1 Then Tabelle13.Name = "frei 3"
                If Len(myC) >= 1 Then Tabelle13.Name = myC.Text
            Case Range("Class4").Address
                myError = 4
                If Len(myC) < 1 Then Tabelle14.Name = "frei 4"
                If Len(myC) >= 1 Then Tabelle14.Name = myC.Text
            Case Range("Class5").Address
                myError = 5
                If Len(myC) < 1 Then Tabelle15.Name = "frei 5"
                If Len(myC) >= 1 Then Tabelle15.Name = myC.Text
            Case Range("Class6").Address
                myError = 6
                If Len(myC) < 1 Then Tabelle16.Name = "frei 6"
                If Len(myC) >= 1 Then Tabelle16.Name = myC.Text
            Case Range("Class7").Address
                myError = 7
                If Len(myC) < 1 Then Tabelle17.Name = "frei 7"
                If Len(myC) >= 1 Then Tabelle17.Name = myC.Text
        End Select
    Next
    ErrorExit:
    'Ereignisse wieder einschalten
    Application.EnableEvents = True
    Select Case myError
        Case 1 To 7
            MsgBox ("Die Zelle: """ & faultCell.Address & """ enthält den Tabellennamen """ & faultCell.Text & """. Dieser ist in der Mappe bereits vorhanden !")
            'Auswahl der Fehlerzelle
            faultCell.Select
        Case 8
            MsgBox "Unerlaubte Auswahl von Zellen", vbCritical + vbOKOnly, "Fehler"
        Case Else
            'Sonstiger Fehler
            MsgBox "Fehler: " & Err.Number & vbCrLf & Err.Description
    End Select
    Set faultCell = Nothing
End Sub

Private Function NameCheck(chkName As Range) As Boolean
    '(C) Ramses
    'Prüfen des zu übernehmenden Tabellennamens
    Dim i As Long
    If Len(chkName.Text) > 31 Then
        NameCheck = False
        Exit Function
    End If
    For i = 1 To Len(chkName)
        Select Case Mid(chkName, i, 1)
            Case "*", "?", "/", "\", "[", "]"
                NameCheck = False
                Exit Function
        End Select
    Next i
    NameCheck = True
End Function

Private Function RangeCheck(chkRange As Range) As Boolean
    '(C) Ramses
    'Prüfen des ausgewählten Bereichs
    Dim chkCell As Range
    For Each chkCell In chkRange
        Select Case chkCell.Address
            Case Range("Class1").Address, Range("Class2").Address, Range("Class3").Address, _
                Range("Class4").Address, Range("Class5").Address, Range("Class6").Address, Range("Class7").Address
                RangeCheck = True
            Case Else
                'Wenn eine andere Zelle in der Auswahl ist
                RangeCheck = False
                Exit Function
        End Select
    Next
End Function


Gruss Rainer

Anzeige
Nachtrag:
17.07.2007 10:37:00
Ramses
Hallo
Sorry, aber die Zeile
MsgBox Selection.Cells.Count
kannst du natürlich löschen, die war nur zum testen drin :-)
Gruss Rainer

AW: Nachtrag:
17.07.2007 22:18:00
Peter
Hallo Rainer
Ich bin sehr beeindruckt und muss mir das ganze mal zu Gemüte führen.
Ich habe den ganzen Code mal Copy / Paste übernommen. Irgend ein kleines Problem besteht noch, und zwar kommt jedes Mal, wenn ich in ein Feld einen neuen Namen eingebe kommt di eMeldung, dass der Name schon vergeben ist.
Zudem handelt es sich bei der Tabelle mit class1, class2, class 3, etc. um ein Arbeitsblatt, wo verschiedene andere Eingaben erfolgen müssen. Tabellennamen sollen nur geändert werden, wenn class1, class2, etc. angewählt und eine Eingabe erfolgt.
Da der ursprüngliche Code grundsätzlich läuft, habe ich mir überlegt, ob dieser Code nicht einfach mit einer Ereignisabfrage erweitert werden kann, die bewirkt, dass bei einer Mehrfachauswahl der mit Class1, Class2, etc. benannten Felder die Mitteilung kommt, dass die Felder nur einzeln bearbeitet werden sollen und dann Class1 angewählt wird (vgl. auch die Rückmeldung an Rudi).
Freundlicher Gruss, Peter

Anzeige
AW: Nachtrag:
17.07.2007 22:36:21
Ramses
Hallo
Sorry, aber deine ursprüngliche Frage lautete ganz anders, daher der aufwändige Code.
Wenn du deine Frage klar stellst kriegst du eine entsprechende Antwort.
Mit diesem Wissen hätte sich jeder von uns einen Haufen Arbeit sparen können :-(
Wenn du den Code mal durchlesen würdest, dann kommst du zu dieser Stelle
Else
myError = 8
GoTo ErrorExit
'oder alternativ bei Änderung einer anderen Zelle
'und wenn keine Meldung gewünscht wird
'Exit Sub
End If
lösche dort einfach
myError = 8
GoTo ErrorExit
und nimm das Hochkomma for
Exit Sub
weg, dann kannst du andere Zellen ganz normal bearbeiten.
Gruss Rainer

Anzeige
AW: Nachtrag:
18.07.2007 07:53:44
Peter
Hallo Rainer
Mein Kommentar war nicht so gemeint, wie du ihn wohl aufgefasst hast. Ich hatte einfach noch nicht genügend Zeit, mich mit dem Code auseinander zu setzen und habe ihn nur copy - paste übernommen. Nun habe ich die Anpassungen vorgenommen und mein Problem ist, dass bei jeder Eingabe die Meldung kommt (sinngemäss):
"Die Zellle: "$C$10" enthält den Tabellennamen "sdf". Dieser ist in der Mappe bereits vorhanden !" Dies trifft jedoch nicht zu.
Wenn ich den Code richtig verstehe, erhalte ich bei jeder Eingabe in den benannten Zellen (class1, class2, etc.) eine entsprechende Meldung, da
Select Case myC.Address
Case Range("Class1").Address
myError = 1
bei jeder Auswahl eine den Fehler myError = 1 - 7 produziert.
Oder habe ich das falsch interpretiert?
Gruss, Peter

Anzeige
AW: Nachtrag:
18.07.2007 22:01:00
Ramses
Hallo
Das hast du richtig interpretiert :-)
Da ist mir auf die Schnelle ein Fehler unterlaufen, bzw. ich werte einen Fehler aus wo gar keiner mehr ist.
Hier ist der überarbeitete Code,... der sollte nun tun
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
    '(C) Ramses
    Dim myC As Range, rngCheck As Boolean
    Dim myError As Integer
    Dim faultCell As Range
    rngCheck = False
    'Ereignisse abschalten, da sonst eine Endlosschleife generiert wird
    Application.EnableEvents = False
    myError = 0
    'On Error GoTo ErrorExit
    'Zählen wieviele Zellen betroffen sind
    'Einzelzelle abarbeiten
    If Selection.Cells.Count = 1 Then
        'Aktuelle Zelle abarbeiten
        'ob im richtigen Bereich
        Set faultCell = Target
        If RangeCheck(faultCell) = True Then
            If NameCheck(faultCell) = False Then
                MsgBox "Die Zelle: " & faultCell.Address & " enthält einen nicht zulässigen Dateinamen", vbCritical + vbOKOnly, "Fehler"
                Application.EnableEvents = True
                Exit Sub
            End If
            Select Case faultCell.Address
                Case Range("Class1").Address
                    myError = 1
                    If Len(faultCell) < 1 Then Tabelle11.Name = "frei 1"
                    If Len(faultCell) >= 1 Then Tabelle11.Name = faultCell.Text
                Case Range("Class2").Address
                    myError = 2
                    If Len(faultCell) < 1 Then Tabelle12.Name = "frei 2"
                    If Len(faultCell) >= 1 Then Tabelle12.Name = faultCell.Text
                Case Range("Class3").Address
                    myError = 3
                    If Len(faultCell) < 1 Then Tabelle13.Name = "frei 3"
                    If Len(faultCell) >= 1 Then Tabelle13.Name = faultCell.Text
                Case Range("Class4").Address
                    myError = 4
                    If Len(faultCell) < 1 Then Tabelle14.Name = "frei 4"
                    If Len(faultCell) >= 1 Then Tabelle14.Name = faultCell.Text
                Case Range("Class5").Address
                    myError = 5
                    If Len(faultCell) < 1 Then Tabelle15.Name = "frei 5"
                    If Len(faultCell) >= 1 Then Tabelle15.Name = faultCell.Text
                Case Range("Class6").Address
                    myError = 6
                    If Len(faultCell) < 1 Then Tabelle16.Name = "frei 6"
                    If Len(faultCell) >= 1 Then Tabelle16.Name = faultCell.Text
                Case Range("Class7").Address
                    myError = 7
                    If Len(faultCell) < 1 Then Tabelle17.Name = "frei 7"
                    If Len(faultCell) >= 1 Then Tabelle17.Name = faultCell.Text
            End Select
            myError = 0
            GoTo ErrorExit
        Else
            'myError = 8
            'GoTo ErrorExit
            'oder alternativ bei Änderung einer anderen Zelle
            'und wenn keine Meldung gewünscht wird
            Exit Sub
        End If
    End If
    'Mehrfach Auswahl abarbeiten
    If RangeCheck(Selection) = False Then
        'Rückgängig machen der letzten Aktion
        'da der gesamte Prozess einer Mehrfachselektion nur
        'bei der korrekten Auswahl der Zellen stattfinden kann
        Application.Undo
        myError = 8
        GoTo ErrorExit
    End If
    For Each myC In Selection
        Set faultCell = myC
        If NameCheck(faultCell) = False Then
            MsgBox "Die Zelle: " & faultCell.Address & " enthält einen nicht zulässigen Dateinamen", vbCritical + vbOKOnly, "Fehler"
            Exit Sub
        End If
        Select Case faultCell.Address
            Case Range("Class1").Address
                myError = 1
                If Len(faultCell) < 1 Then Tabelle11.Name = "frei 1"
                If Len(faultCell) >= 1 Then Tabelle11.Name = faultCell.Text
            Case Range("Class2").Address
                myError = 2
                If Len(faultCell) < 1 Then Tabelle12.Name = "frei 2"
                If Len(faultCell) >= 1 Then Tabelle12.Name = faultCell.Text
            Case Range("Class3").Address
                myError = 3
                If Len(faultCell) < 1 Then Tabelle13.Name = "frei 3"
                If Len(faultCell) >= 1 Then Tabelle13.Name = faultCell.Text
            Case Range("Class4").Address
                myError = 4
                If Len(faultCell) < 1 Then Tabelle14.Name = "frei 4"
                If Len(faultCell) >= 1 Then Tabelle14.Name = faultCell.Text
            Case Range("Class5").Address
                myError = 5
                If Len(faultCell) < 1 Then Tabelle15.Name = "frei 5"
                If Len(faultCell) >= 1 Then Tabelle15.Name = faultCell.Text
            Case Range("Class6").Address
                myError = 6
                If Len(faultCell) < 1 Then Tabelle16.Name = "frei 6"
                If Len(faultCell) >= 1 Then Tabelle16.Name = faultCell.Text
            Case Range("Class7").Address
                myError = 7
                If Len(faultCell) < 1 Then Tabelle17.Name = "frei 7"
                If Len(faultCell) >= 1 Then Tabelle17.Name = faultCell.Text
        End Select
        myError = 0
    Next
    ErrorExit:
    Select Case myError
        Case 0
        Case 1 To 7
            MsgBox ("Die Zelle: """ & faultCell.Address & """ enthält den Tabellennamen """ & faultCell.Text & """. Dieser ist in der Mappe bereits vorhanden !")
            'Auswahl der Fehlerzelle
            faultCell.Select
        Case 8
            MsgBox "Unerlaubte Auswahl von Zellen", vbCritical + vbOKOnly, "Fehler"
        Case Else
            'Sonstiger Fehler
            MsgBox "Fehler: " & Err.Number & vbCrLf & Err.Description
    End Select
    'Ereignisse wieder einschalten
    Application.EnableEvents = True
    Set faultCell = Nothing
End Sub

Gruss Rainer

Anzeige
AW: Nachtrag:
21.07.2007 22:55:38
Peter
Hallo Rainer
Vielen Dank für deine Antwort und den angepassten Code.
Das läuft nun prima, bis auf eine Ausnahme.
Wenn beispielsweise in Class1"X" steht und in Class2 "Y" und ich dann bei Class2 "X" eingebe, wird dieser Eingabefehler (Doppeleingabe darf nicht möglich sein) nicht vom Code abgefangen, sondern es erscheint folgende Meldung: "Laufzeitfehler '2004': Kann einem Blatt nicht den gleichen Namen geben wie einem anderen Blatt ..."
Hier kann ich mit Beenden, Debuggen oder Hilfe reagieren.
Wenn ich auf Beenden gehe, reagiert das Programm nicht mehr bei Ereignissen.
Kann man den Code anpassen, dass eine Doppeleingabe gar nicht angenommen wird und beispielsweise der alte Eintrag bestehen bleibt? Wie kann man verhindern, dass nach einer Fehlermeldung die Ereignisse durch Excel weiterhin registriert werden?
Danke für eine gelegentliche Rückmeldung.
Peter

Anzeige
AW: Nachtrag:
22.07.2007 00:31:00
Ramses
Hallo
Sorry, nimm das Hochkomma vor dieser Zeile weg
'On Error GoTo ErrorExit
Dann wird der Fehler aufgefangen und die Ereignisse werden weiter aktiviert
Gruss Rainer

AW: Nachtrag:
22.07.2007 18:27:34
Peter
Hallo Rainer
So klappts. Danke.
Frage: Könnte man das erweitern, dass einfach die alte Bezeichnung wieder in die Zelle eingetragen wird?
Gruss, Peter

AW: Nachtrag:
22.07.2007 18:46:40
Ramses
Hallo
dann schreib anstelle dieser Anweisung in den beiden Codeteilen
If NameCheck(faultCell) = False Then
MsgBox "Die Zelle: " & faultCell.Address & " enthält einen nicht zulässigen Dateinamen", vbCritical + vbOKOnly, "Fehler"
Exit Sub
End If
diese Anweisung
If NameCheck(faultCell) = False Then
MsgBox "Die Zelle: " & faultCell.Address & " enthält einen nicht zulässigen Dateinamen", vbCritical + vbOKOnly, "Fehler"
With Application
.EnableEvents = False
.UnDo
.EnableEvents = True

Exit Sub
End If
Dann sollte es gehen
Gruss Rainer

Anzeige
AW: Nachtrag:
23.07.2007 08:18:44
Peter
Hallo Rainer
Vielen Dank für die schnelle Rückmeldung.
Ich habe den Einschub an einer anderen Stelle eingefügt, da an der von dir vorgeschlagenen nichts passierte.
Case 1 To 7
MsgBox ("Die Zelle: """ & faultCell.Address & """ enthält den Tabellennamen """ & faultCell.Text & """. Dieser ist in der Mappe bereits vorhanden !")
'Auswahl der Fehlerzelle
faultCell.Select
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
So funktioniert es tadellos.
Noch eine kleine Anschlussfrage: Was macht eigentlich die Funktion Rangecheck?
Vielen Dank für die super Unterstützung.
Peter

Anzeige
AW: Nachtrag:
23.07.2007 20:27:00
Ramses
Hallo
Lass dein Einschub bei den anderen auch gleich drin, dann wird bei einem fehlerhaften Tabellenname dieser auch gleich gelöscht.
Das habe ich wohl falsch verstanden
RangeCheck prüft nichts anderes ob die aktuelle Zelle im richtigen Bereich ist
Setz am Anfang des Change-Codes einen Haltepunkt, ändere eine Class-Zelle und gehe dann mit F8 im Einzelschritt durch den Code, dann siehst du was der Code macht.
Gruss Rainer

AW: Nachtrag:
24.07.2007 07:29:01
Peter
Hallo Rainer
Mit diesem Code sind wir nun am "Ziel der Träume" angekommen.
Herzlichen Dank!
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige