Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
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

Sub Worksheet_Change(ByVal Target As ...

Sub Worksheet_Change(ByVal Target As ...
27.02.2023 13:50:32
Haustein
Hallo Gemeinschaft
überwache eine Tabelle mit diesem code
Sub Worksheet_Change(ByVal Target As Range)
wie kann man es hinbekommen, dass nur der Bereich
A1-B15 überwacht wird

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:00:12
Haustein
das coding habe ich von piet
Problem ist, dass wenn ich
diesen code aktiv lasse Worksheets("Gesamt").Cells(7, 7) = "Pages 1/" & Anzahl
läuft der code in eine Endlosschleife
wie bekomme ich da gelöst
Sub Worksheet_Change(ByVal Target As Range)
Dim Anzahl As Integer
If Not Intersect(Target, Range("A13:A" & Rows.Count)) Is Nothing Then
If Target.Count > 1 Then Exit Sub
With Worksheets("Gesamt")
   On Error GoTo Fehler
   
   
   If Target.Value = Empty Then
      Sht = Mid(Target.Cells(1, 2).Formula, 2)
      Sht = Left(Sht, InStr(Sht, "!") - 1)
      Sht = Replace(Sht, "'", "")
      
      ok = MsgBox(Sht & vbLf & "Soll diese Tabelle gelöscht werden?", vbYesNo)
      If ok = vbNo Then Exit Sub
      Application.DisplayAlerts = False
      Worksheets(Sht).Delete
      Application.DisplayAlerts = True
      Target.EntireRow.Delete shift:=xlUp
      Exit Sub
   End If
   
   On Error Resume Next
   NewSht = Target.Value
   'Test ob Sheet schon existiert?
   Set Test = Worksheets(NewSht)
   If Err.Number = 0 Then
      MsgBox "Diese Tabelle ist bereits vorhanden!", vbInformation
      Target.Select: Exit Sub
   End If
   
   Err.Clear  'Löschen!
   On Error GoTo Fehler
   'Mustersheet kopieren und ausfüllen
   Sheets("Musterseite").Copy After:=Sheets(Sheets.Count)
   Sheets(Sheets.Count).Name = NewSht
   'Artikelname + Einzelpreis setzen
   Sheets(NewSht).Range("B1") = Target.Value
   'Formeln in Menge + Summe in Gesamt setzen
   Target.Offset(0, 1).Formula = "='" & NewSht & "'!F1"
   Target.Offset(0, 2).Formula = "='" & NewSht & "'!F2"
   
   'Zelle für Einzelpreis aktivieren
   ActiveSheet.Range("B2").Select
End With
End If
Anzahl = ThisWorkbook.Sheets.Count
Worksheets("Gesamt").Cells(7, 7) = "Pages 1/" & Anzahl
a = 1
Exit Sub
Fehler:  MsgBox "Unerwarteter Fehler aufgetreten" & vbLf & Error()
End Sub

Anzeige
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:15:21
JoWE
Hi,
versuch mal:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:B15")) Is Nothing Then
      MsgBox "Hallo"
      'oder Dein Code
    End If
End Sub
Gruß
Jochen
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:29:25
Haustein
nach wie vor - ändere ich in der zelle c20 etwas, dann springt der code trotzdem an
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:30:47
Haustein
ich möchte ja gerne die Anzahl der Tabellenblätter mit in das Tabellenblat GESAMT haben - sobald ich in einer Zelle c20 einen Wert eintrage beginnt der code von vorn
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:34:27
Rudi
Hallo,
schieb mal das letzte End If hinter das letzte Exit Sub.
Gruß
Rudi
Anzeige
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:44:26
JoWE
ja, natürlich. Weil ja das Ereignis "SelectionChange" für das gesamte Tabellenblatt gilt und demzufolge eintritt.
Kommt dann aber auch die MsgBox?
Also bei mir kommt die MsgBox nicht, wenn sich im Bereich A1:B15 was tut.
Gruß
Jochen
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:46:39
JoWE
sorry es muss natürlich so lauten:
Also bei mir kommt die MsgBox NUR, wenn sich im Bereich A1:B15 was tut.
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 15:02:52
Haustein
wie sieht denn dein coding aus
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 15:30:51
JoWE
hatte ich doch bereits gepostet!
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 16:49:57
Haustein
alles klar - danke
AW: Sub Worksheet_Change(ByVal Target As ...
27.02.2023 14:23:57
Daniel
Hi
das überwachen eines Teiles der Tabelle macht man wie von Jowe gezeigt mit
If Not Intersect(Target, Range(...)) then
    hier dann der Code, wenn im Bereich eine Zelle gändert wurde
end if
Endlosschleifen in Eventmakros vermeidet man am besten, wenn man vor der Aktion, die das eigene Event auslöst, die Ausführung dieser Events ausschaltet. Man muss nur daran denken, dass man die Events hinterher wieder einschaltet, denn das passiert nicht automatisch.
kleines Beispiel, du willst erreichen, dass der Text in Zelle A1 immer groß geschrieben ist:
Sub Worksheet_Change(ByVal Target As Range)
if not intersect(Target, Range("A1")) is nothing then
    Application.EnableEvents = false
    Range("A1").value = UCase(Range("A1").value)
    Application.EnableEvents = true
end if
end sub
Gruß Daniel
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige