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

Eingabe verunmöglichen, wenn mehrere Sheets aktiv

Eingabe verunmöglichen, wenn mehrere Sheets aktiv
18.03.2016 08:13:08
Peter
Guten Tag
Ich hatte früher einen Code, der eine Eingabe rückgängig machte, wenn mehr als ein Tabellenblatt aktiviert ist.
Nun funktioniert das nicht mehr zuverlässig. In der Regel klappt es das erste Mal. Dann wir die Meldung noch angezeigt, aber der Eintrag nicht rückgängig gemacht.
Kann mir jemand helfen?
Danke und Gruss, Peter
https://www.herber.de/bbs/user/104438.xlsm
Option Explicit
Dim bUndo As Boolean
''''

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If ActiveWindow.SelectedSheets.Count > 1 Then
With Application
.EnableEvents = False
If Not bUndo Then .Undo
.EnableEvents = True
End With
bUndo = True
MsgBox "Mehrere Tabellen aktiviert !!!"
Application.EnableEvents = True
Exit Sub
End If
bUndo = False
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabe verunmöglichen, ...
18.03.2016 09:50:49
Herbert
Hallo Peter,
so hat es bei mir mit Excel 2013 funktioniert:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If ActiveWindow.SelectedSheets.Count > 1 Then
If Not bUndo Then
Application.EnableEvents = False
Application.Undo
bUndo = True
MsgBox "Mehrere Tabellen aktiviert !!!"
Application.EnableEvents = True
Exit Sub
End If
End If
bUndo = False
End Sub
Servus

AW: Eingabe verunmöglichen, ...
18.03.2016 09:54:42
Peter
Hallo Herbert
Danke! Das ist perfekt.
Gruss, Peter

AW: Eingabe verunmöglichen, ...
18.03.2016 14:15:12
Steve
Hallo Peter,
bei drei markierten Blättern führt er mir mit Herberts Code jedes zweite Mal zwei .Undo's aus, was dazu führt, dass der Eintrag doch wieder in der Zelle steht.
Für vier markierte Blätter führt er immer zwei Stück aus, bei fünfen erst zwei, dann drei und wieder von vorn...
Der Super-Dau gewinnt.
lg Steve

Anzeige
AW: Eingabe verunmöglichen, wenn mehrere
18.03.2016 10:12:58
Steve
Hallo Peter,
gehe doch mal bitte die Logik deines Codes durch:
Wenn mehr als ein Sheet markiert ist, dann führe ein .Undo aus wenn bUndo falsch ist. Beim allerersten Mal ist es immer falsch.
Danach wird es auf wahr gesetzt und bleibt es auch. Erst wenn du nur ein Blatt markierst und dann eine Zelle in einem Blatt änderst (.Count = 1) wird bUndo wieder auf falsch gesetzt. Deine Prüfung ist damit solang nutzlos bis dein Benutzer dies auch wirklich gemacht hat, denn solang wird kein .Undo ausgeführt. Das heist entweder den Benutzer nochmals belehren, oder den Code für den Super-Dau rüsten.
Ich bin mir nicht sicher wofür bUndo gedacht war, so ganz erschließt sich mir der Sinn dahinter nämlich nicht, aber ich vermute es soll in diesem Code die Aufgabe übernehmen, dass deine MsgBox nicht 10x angezeigt wird wenn du 10 Tabellenblätter markiert hattest. Du änderst bei Mehrfachmarkierung von Tabellenblättern auf jedem Blatt eine Zelle und damit wird der Code für alle diese ausgeführt. Nach dem letzten muss er jedoch bUndo wieder auf falsch setzen, sonst bleibt er funktionslos. Das kann über einen Zähler erfolgen.
Probier bitte mal untenstehenden Code ob er deinen Vorstellungen entspricht.
lg Steve
Dim bUndo As Boolean
Dim i As Long
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If i = 0 Then i = ActiveWindow.SelectedSheets.Count
'On Error Resume Next
If i > 1 Then
With Application
.EnableEvents = False
If Not bUndo Then
.Undo
MsgBox "Mehrere Tabellen aktiviert !!!"
End If
.EnableEvents = True
End With
bUndo = True
Else
bUndo = False
End If
i = i - 1
End Sub

Anzeige
AW: Eingabe verunmöglichen, wenn mehrere
18.03.2016 13:14:44
Peter
Hallo Steve
Vielen Dank.
Ja, es ist richtig, bei einer Mehrfachselektion von Tabellenblättern möchte ich nur eine Fehlermeldung erhalten.
Ich werde mir deinen Code noch anschauen und mit der anderen Lösung vergleichen.
Gruss, Peter

AW: Eingabe verunmöglichen, wenn mehrere
18.03.2016 16:19:48
Herbert
Hallo Peter,
so ging's bei mir auch mit 6 Tabellenblättern:
Option Explicit
Dim iStrg%, iSheetsSelected%
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveWindow.SelectedSheets.Count > 1 Then
If iStrg >= iSheetsSelected - 1 And iStrg > 0 Then
iStrg = 0
iSheetsSelected = 0
Exit Sub
Else
If iStrg = 0 Then
Application.EnableEvents = False
Application.Undo
MsgBox "Mehrere Tabellen aktiviert !!!", vbCritical, "Fehler"
Application.EnableEvents = True
iSheetsSelected = ActiveWindow.SelectedSheets.Count
End If
iStrg = iStrg + 1
Exit Sub
End If
End If
End Sub
Servus

Anzeige
AW: Eingabe verunmöglichen, wenn mehrere
18.03.2016 20:16:18
Peter
Hallo Herbert
Vielen Dank.
Jetzt habe ich 2 funktionierende Codes!
Gruss, Peter

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige