Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1816to1820
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
Felder leeren wenn
04.03.2021 10:54:33
Christoph
Hallo,
ich möchte eine Funktion wenn man in Spalte C eine Zelle löscht, dann soll in der Mappe geprüft werden, ob es ein Worksheet mit dem Namen "TR (Integer) -7" gibt. Sollte kein Worksheet existieren, dann soll in der Spalte A und B in der entsprechende Zeile die Werte gelöscht werden.
Mein Code sieht so aus, funktioniert aber noch nicht:
If Target.Count = 1 Then
If Target.Column = 3 And Target.Row > 7 Then
TR = Target.Row
If Worksheets("Übersicht").Range("C" & CStr(TR)) = "" Then
For Each Worksheets In Workbook
If Worksheets.Name  Worksheets("TR" - 7) Then
Worksheets("Übersicht").Unprotect
Worksheets("Übersicht").Columns("A:B").Locked = False
Worksheets("Übersicht").Range("A" & CStr(TR)) = ""
Worksheets("Übersicht").Range("B" & CStr(TR)) = ""
Worksheets("Übersicht").Columns("A:B").Locked = True
Worksheets("Übersicht").Protect , AllowFiltering:=True, AllowFormattingRows:=True 
Hatte jemand eine Idee?
Gruß Christoph

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Felder leeren wenn
04.03.2021 11:05:28
Nepumuk
Hallo Christoph,
so:
If Worksheets.Name  Worksheets(TR - 7) Then

Gruß
Nepumuk

AW: Felder leeren wenn
04.03.2021 11:12:38
Christoph
Hmm, zeigt mir immernoch einen Fehler an.
Hier mal der komplette Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strBlattname As String
If Target.Count = 1 Then
If Target.Column = 3 And Target.Row > 7 Then
TR = Target.Row
If Target  "" Then
If Worksheets("Übersicht").Range("A" & CStr(TR)) = "" Then
Worksheets("Übersicht").Unprotect
Worksheets("Übersicht").Columns("A:B").Locked = False
strBlattname = TR - 7
strBlattname = LegalSheetName(strBlattname)
Worksheets("Übersicht").Range("A" & CStr(TR)) = strBlattname
Worksheets.Add after:=Worksheets(Sheets.Count)
ActiveSheet.Name = strBlattname
Application.EnableEvents = False
Application.EnableEvents = True
Worksheets("Übersicht").Range("B" & CStr(TR)).FormulaLocal = "='" & TR - 7 & "'! _
D2"
Worksheets("Übersicht").Columns("B").EntireColumn.AutoFit
Worksheets("Übersicht").Columns("A:B").Locked = True
Worksheets("Übersicht").Protect , AllowFiltering:=True, AllowFormattingRows:= _
True, AllowFormattingColumns:=True
Else
If Worksheets("Übersicht").Range("C" & CStr(TR)) = "" Then
For Each Worksheets In Workbook
If Worksheets.Name  Worksheets(TR - 7) Then
Worksheets("Übersicht").Unprotect
Worksheets("Übersicht").Columns("A:B").Locked = False
Worksheets("Übersicht").Range("A" & CStr(TR)) = ""
Worksheets("Übersicht").Range("B" & CStr(TR)) = ""
Worksheets("Übersicht").Columns("A:B").Locked = True
Worksheets("Übersicht").Protect , AllowFiltering:=True,  _
AllowFormattingRows:=True, AllowFormattingColumns:=True
End If
End If
End If
End If
End If
End If
End Sub


Anzeige
AW: Felder leeren wenn
04.03.2021 11:26:35
Nepumuk
Hallo Christoph,
hätte mir gleich auffallen müssen. Was willst du hier:
If Worksheets.Name Worksheets(TR - 7) Then
vergleichen? Den Namen der Worksheets? Wenn ja, dann so:
If Worksheets.Name CStr(TR - 7) Then
Gruß
Nepumuk

AW: Felder leeren wenn
04.03.2021 11:43:00
Christoph
Hallo Nepumuk,
danke.Kommen der Sache näher. Ich glaub mir fehlt noch ein
NExt
Befehl. Aktuell bringt er mir End If ohne End If Block
Weißt du die Lösung?
Gruß Christoph

AW: Felder leeren wenn
04.03.2021 12:01:49
Nepumuk
Hallo Christoph,
teste mal:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strBlattname As String
    Dim TR As Long
    Dim objWorksheet As Worksheet
    If Target.Count = 1 Then
        If Target.Column = 3 And Target.Row > 7 Then
            TR = Target.Row
            If Target <> "" Then
                If Worksheets("Übersicht").Range("A" & CStr(TR)) = "" Then
                    Worksheets("Übersicht").Unprotect
                    Worksheets("Übersicht").Columns("A:B").Locked = False
                    strBlattname = TR - 7
                    strBlattname = LegalSheetName(strBlattname)
                    Worksheets("Übersicht").Range("A" & CStr(TR)) = strBlattname
                    Worksheets.Add after:=Worksheets(Sheets.Count)
                    ActiveSheet.Name = strBlattname
                    Application.EnableEvents = False
                    Application.EnableEvents = True
                    Worksheets("Übersicht").Range("B" & CStr(TR)).FormulaLocal = "='" & TR - 7 & "'!D2"
                    Worksheets("Übersicht").Columns("B").EntireColumn.AutoFit
                    Worksheets("Übersicht").Columns("A:B").Locked = True
                    Worksheets("Übersicht").Protect , AllowFiltering:=True, AllowFormattingRows:=True, AllowFormattingColumns:=True
                    
                Else
                    If Worksheets("Übersicht").Range("C" & CStr(TR)) = "" Then
                        For Each objWorksheet In ThisWorkbook.Worksheets
                            If objWorksheet.Name <> CStr(TR - 7) Then
                                Worksheets("Übersicht").Unprotect
                                Worksheets("Übersicht").Columns("A:B").Locked = False
                                Worksheets("Übersicht").Range("A" & CStr(TR)) = ""
                                Worksheets("Übersicht").Range("B" & CStr(TR)) = ""
                                Worksheets("Übersicht").Columns("A:B").Locked = True
                                Worksheets("Übersicht").Protect , AllowFiltering:=True, AllowFormattingRows:=True, AllowFormattingColumns:=True
                            End If
                        Next
                    End If
                End If
            End If
        End If
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Felder leeren wenn
04.03.2021 12:55:08
Christoph
Hallo,
funktioniert leider auch nicht. Er löscht mir die Spalte A und B Reihe "TR" nicht.

AW: Felder leeren wenn
04.03.2021 13:00:20
Nepumuk
Hallo Christoph,
lade eine Mustermappe hoch und gib mir eine Anleitung was ich zu tun habe und welches Ergebnis du erwartest. Sonst wird das nichts.
Gruß
Nepumuk

AW: Felder leeren wenn
04.03.2021 16:29:46
Christoph
Hallo Nepumuk,
vielen Dank für deine Hilfe, habe mir etwas anderes und effektiveres Überlegt.
Vielleicht könntest du mir hierzu weiterhelfen:
Ich möchte, dass sobald ein Tabellenblatt, welche alle den Namen "1", "2", usw..., gelöscht wird, in einem Tabellenblatt mit dem Namen "Übersicht" die Zelleninhalte der Zeile der Nummer des Tabellenblattes + 7 gelöscht wird.
Bedeutet, löscht man das Tabellenblatt mit dem Namen 3, dann wird im Tabellenblatt "Übersicht" bei Zeile 10 jeder Zelleninhalt geleert.
Wie würde so etwas aussehen?
Gruß Christoph
Anzeige

266 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige