20.12.2022, 17:18 (Dieser Beitrag wurde zuletzt bearbeitet: 20.12.2022, 17:37 von sebawil.)
So, jetzt habe ich mich selber versucht und stolpere bei einer Sache (für Euch VBA-Profis ein Klacks, vermute ich)
Ich arbeite mit Ralfs Code: Werte einer Zelle und eines Wahlbereiches können nicht (versehentlich) gelöscht werden
& ich möchte die aktive Zeile farblich markieren, in der gerade der Inventurbestand zählerisch wird.
bei mir sieht das so aus, siehe Anhang:
Problem dabei: Die Mehrauswahl kann ich dennoch löschen und ich sehe keine "Farbe" - heben sich die Codes gegenseitig auf? Als Fehler kommt "Fehler beim Kompilieren" -> Mehrdeutiger Name.
Datei habe ich mir nicht angesehen, aber die Textdatei mit dem VBA Code. Du hast da 2 x
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
drin stehen. Das geht natürlich nicht. Eine von den beiden Prozeduren (bis zum End Sub) muss da komplett raus.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Danke, Ralf - ich habe reduziert, danke für den Hinweis.
******** Private Sub Worksheet_Change(ByVal Target As Range) If Not wert = Empty Then Application.EnableEvents = False If Target = Empty Then Target = wert: MsgBox wert & " kann nicht gelöscht werden" Application.EnableEvents = True
wert = Empty 'Bereich anpassen... ActiveSheet.Protect Contents:=False If Not Intersect(Target, Range("A1:I45")) Is Nothing Then If Target.Count = 1 Then wert = Target Else ActiveSheet.Protect Contents:=True
If Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = False ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 With Target ' Highlight the entire row and column that contain the active cell .EntireRow.Interior.ColorIndex = 8 End With Application.ScreenUpdating = True
End If End Sub *******************
da bekomme ich leider auch die Meldung, dass ein Kompilieren nicht geht. Stehe ich so auf dem Schlauch? Es muss doch mit dem End If End Sub-Part enden. ..
20.12.2022, 23:25 (Dieser Beitrag wurde zuletzt bearbeitet: 20.12.2022, 23:28 von Ralf A.)
(15.12.2022, 17:30)Ralf schrieb: Nimm den Code des Change Ereignisses aus Post # 3:
Code:
Option Explicit Dim wert
Private Sub Worksheet_Change(ByVal Target As Range) If Not wert = Empty Then Application.EnableEvents = False If Target = Empty Then Target = wert: MsgBox wert & " kann nicht gelöscht werden" Application.EnableEvents = True End If End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) wert = Empty 'Bereich anpassen... If Target.Count = 1 And Not Intersect(Target, Range("A2:A10")) Is Nothing Then wert = Target End If End Sub
... und den Code des SelectionChange Ereignisses aus Post #8 hängst Du unten dran...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
...ah... sorry... hab gerade beim scrollen entdeckt, dass der kopierte Code im letzten Post auch noch das Selection_Change Ereignis beinhaltet. Das muss natürlich raus...
PS: Schau mal in Deine PN...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.