Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unabsichtlicher ComboBox_Change Aufruf

Forumthread: Unabsichtlicher ComboBox_Change Aufruf

Unabsichtlicher ComboBox_Change Aufruf
03.05.2020 19:47:46
Dewma
Guten Abend,
In einem Sheet habe ich eine gewöhnliche ComboBox erstellt mit folgendem Code:
Private Sub ComboBoxObjekte_Change()
Dim strElem As String
strElem = ComboBoxObjekte.Value()
Select Case strElem
Case "Gelöschte Objekte"
Call Uebersicht_Sheet.Zeige_Objekte(2)
Case "Eingefügte Objekte"
Call Uebersicht_Sheet.Zeige_Objekte(1)
Case "Geänderte Objekte"
Call Uebersicht_Sheet.Zeige_Objekte(3)
Case "Alle Objekte"
Call Uebersicht_Sheet.Zeige_Objekte(4)
End Select
End Sub
Wenn ich jedoch nun in einer Funktion versuche neue Worksheets in mein Workbook einzufügen, springt das Makro in oben dargestellte Methode, obwohl sie nicht aufgerufen wird. Code:
Private Sub Importiere_Aenderungen()
'Funktion, die die Änderungsdateien einliest
Dim intCount As Integer
Dim strDatPfad As String
Dim strDatName As String
Dim strDatPfadUName As String
Dim strAenderungName As String
Dim strDatArr(4) As String
Dim wkbDatImport As Workbook
Dim wkbMakro As Workbook
Dim wksCount As Worksheet
strDatPfad = wsStart.Cells(7, 2).Value()
Set wkbMakro = ActiveWorkbook
strDatArr(0) = "Datei1"
strDatArr(1) = "Datei2"
strDatArr(2) = "Datei3"
strDatArr(3) = "Datei4"
Call AppFunktionen.eventOf
'Worksheets löschen
For Each wksCount In wkbMakro.sheets
For intCount = 0 To 3
If wksCount.Name = strDatArr(intCount) Then
wksCount.Delete
Exit For
End If
Next intCount
Next wksCount
'Sheets mit den Aenderungen einlesen
For intCount = 0 To 3
strAenderungName = strDatArr(intCount)
strDatName = "/" & strAenderungName & ".csv"
strDatPfadUName = strDatPfad & strDatName
If Dir(strDatPfadUName)  vbNullString Then
Workbooks.Open Filename:=strDatPfadUName, Local:=True
Set wkbDatImport = ActiveWorkbook
Worksheets(1).Copy After:=wkbMakro.Worksheets("Bedienung")
wkbDatImport.Close savechanges:=False
Else:
Call AppFunktionen.eventOn
MsgBox (strAenderungName & "-Datei liegt in dem Ordner nicht vor. Bitte zunächst  _
die Datei exportieren.")
Call AppFunktionen.eventOf
End If
Next intCount
Call AppFunktionen.eventOn
End Sub
Der Aufruf geschieht in der fett markierten Zeile. Kann mir jemand erklären, wie es dazu kommt?
Vielen Dank und Grüße.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unabsichtlicher ComboBox_Change Aufruf
03.05.2020 20:23:36
Daniel
Hi
Das Change-Event spricht bei jeder Änderung an.
Egal was geändert wird, egal wer ändert.
Wenn das Kopieren des Blattes so ausgeführt wird, dass es ein "Neu anlegen" mit nachträglicher Angleichung der Inhalte und Einstellungen ist, wäre das auch eine Änderung.
Ggf auf ein anderes Event ausweichen, Change ist meistens ungünstig, wenn auf Anwendereingaben reagiert werden soll.
Wenn du kein besseres Event findesr probiert mal, ob Application.EnableEvents hilft, das müsste so in den Code eingebaut werden und unterbindet die automatische Ausführung bon Tabellenblatt- und Mappenevents.
...
Set wkbDatImport = ActiveWorkbook
Application.EnableEvents = False
Worksheets(1).Copy After:=wkbMakro.Worksheets("Bedienung")
Application.EnableEvents = True
wkbDatImport.Close savechanges:=False
...
Gruß Daniel
Anzeige
AW: Unabsichtlicher ComboBox_Change Aufruf
05.05.2020 11:08:59
Dewma
Hallo Daniel,
die Events habe ich bereits ausgeschaltet, sodass das nicht zu helfen scheint.
Ein anderes mögliches Event wäre Click, richtig? Selbst wenn ich die Funktion als Click-Event definiere, wird diese aufgerufen, wenn ein neues Sheet in das Workbook eingefügt wird.
AW: Unabsichtlicher ComboBox_Change Aufruf
03.05.2020 22:09:28
GerdL
Hallo Dewma,
kannst du bitte die Prozeduren
AppFunktionen.eventOf
AppFunktionen.eventOn
zeigen.
Gruß Gerd
Anzeige
AW: Unabsichtlicher ComboBox_Change Aufruf
05.05.2020 11:01:25
Dewma
Hier die EventOn Funktion: (Das Private habe ich hinzugefügt, damit der Code hier im Forum erkannt wird)
Private Sub eventOn()
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Die EventOff() Funktion ist entsprechend mit allem auf "False".
Anzeige
;

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