Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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
Anzeige

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
Anzeige
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
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
Anzeige
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!
Anzeige
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

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige