HERBERS Excel-Forum - das Archiv

Thema: application.screenupdating = false funktioniert nicht

application.screenupdating = false funktioniert nicht
Hauke
Hallo, in folgendem Makro funktioniert das Abschalten der Bildschirmaktualisierung leider nicht. Woran kann das liegen?

Sub Extraktionsliste_Klicken()


Dim PlateCodeEingabe_wiederholen As String
Dim PfadPlateCode1 As String
Dim PfadPlateCode2 As String
Dim PfadPlateCode3 As String
Dim PfadPlateCode4 As String
Dim wsDestination As Worksheet
Dim wbSource As Workbook
Dim wsSource As Worksheet

'Userform anzeigen
Eingabe_PlateCodes:
UserForm_Platecodes.Show

'PlateCodes in Variable schreiben und Präfix hinzufügen
PlateCode1 = "PLT" & PlateCode1
PlateCode2 = "PLT" & PlateCode2
PlateCode3 = "PLT" & PlateCode3
PlateCode4 = "PLT" & PlateCode4

'Dateipfade definieren
PfadPlateCode1 = [frmPfadExtraktionslistenImport] & "\" & PlateCode1 & ".txt"
PfadPlateCode2 = [frmPfadExtraktionslistenImport] & "\" & PlateCode2 & ".txt"
PfadPlateCode3 = [frmPfadExtraktionslistenImport] & "\" & PlateCode3 & ".txt"
PfadPlateCode4 = [frmPfadExtraktionslistenImport] & "\" & PlateCode4 & ".txt"

'Prüfen of Dateien vorhanden sind, wenn nicht dann PlateCode Eingabe wiederholen
PlateCodeEingabe_wiederholen = "Nein"

If Dir(PfadPlateCode1) = "" And PlateCode1 <> "PLT" Then
MsgBox "Die Input-Datei zu PlateCode 1 existiert nicht."
PlateCodeEingabe_wiederholen = "Ja"
End If

If Dir(PfadPlateCode2) = "" And PlateCode2 <> "PLT" Then
MsgBox "Die Input-Datei zu PlateCode 2 existiert nicht."
PlateCodeEingabe_wiederholen = "Ja"
End If

If Dir(PfadPlateCode3) = "" And PlateCode3 <> "PLT" Then
MsgBox "Die Input-Datei zu PlateCode 3 existiert nicht."
PlateCodeEingabe_wiederholen = "Ja"
End If

If Dir(PfadPlateCode4) = "" And PlateCode4 <> "PLT" Then
MsgBox "Die Input-Datei zu PlateCode 4 existiert nicht."
PlateCodeEingabe_wiederholen = "Ja"
End If

If PlateCodeEingabe_wiederholen = "Ja" Then
'[frmPlateCode1] = ""
'[frmPlateCode2] = ""
'[frmPlateCode3] = ""
'[frmPlateCode4] = ""
GoTo Eingabe_PlateCodes
End If

Application.ScreenUpdating = False 'schaltet die Bildschirmaktualisierung aus, sodass während des Imports nur das "Evaluation" Sheet gezeigt wird

'PlateCode in Tabellenblatt InputAlle eintragen
ThisWorkbook.Sheets("InputAlle").Unprotect "iso17025" ' Schreibschutz aufheben
If PlateCode1 <> "PLT" Then
[frmPlateCode1] = PlateCode1
Else
[frmPlateCode1] = ""
End If
If PlateCode2 <> "PLT" Then
[frmPlateCode2] = PlateCode2
Else
[frmPlateCode2] = ""
End If
If PlateCode3 <> "PLT" Then
[frmPlateCode3] = PlateCode3
Else
[frmPlateCode3] = ""
End If
If PlateCode4 <> "PLT" Then
[frmPlateCode4] = PlateCode4
Else
[frmPlateCode4] = ""
End If
ThisWorkbook.Sheets("InputAlle").Protect "iso17025" ' Schreibschutz wieder setzen

' Daten kopieren für PlateCode1
If PlateCode1 <> "PLT" Then
Set wbSource = Workbooks.Open(PfadPlateCode1)
Set wsSource = wbSource.Sheets(1) ' Annahme: Daten befinden sich im ersten Arbeitsblatt
Set wsDestination = ThisWorkbook.Sheets("Input1") ' Definiert Ziel-Tabellenblatt
wsDestination.Unprotect "iso17025" ' Schreibschutz aufheben
wsDestination.Cells.Clear
wsSource.UsedRange.Copy wsDestination.Cells(1, 1) ' Fügt die Daten ab Zelle A1 ein
wsDestination.Protect "iso17025" ' Schreibschutz wieder setzen
wbSource.Close False ' Schließt die Quelldatei ohne zu speichern
End If

' Daten kopieren für PlateCode2
If PlateCode2 <> "PLT" Then
Set wbSource = Workbooks.Open(PfadPlateCode2)
Set wsSource = wbSource.Sheets(1) ' Annahme: Daten befinden sich im ersten Arbeitsblatt
Set wsDestination = ThisWorkbook.Sheets("Input2") ' Definiert Ziel-Tabellenblatt
wsDestination.Unprotect "iso17025" ' Schreibschutz aufheben
wsDestination.Cells.Clear
wsSource.UsedRange.Copy wsDestination.Cells(1, 1) ' Fügt die Daten ab Zelle A1 ein
wsDestination.Protect "iso17025" ' Schreibschutz wieder setzen
wbSource.Close False ' Schließt die Quelldatei ohne zu speichern
End If

' Daten kopieren für PlateCode3
If PlateCode3 <> "PLT" Then
Set wbSource = Workbooks.Open(PfadPlateCode3)
Set wsSource = wbSource.Sheets(1) ' Annahme: Daten befinden sich im ersten Arbeitsblatt
Set wsDestination = ThisWorkbook.Sheets("Input3") ' Definiert Ziel-Tabellenblatt
wsDestination.Unprotect "iso17025" ' Schreibschutz aufheben
wsDestination.Cells.Clear
wsSource.UsedRange.Copy wsDestination.Cells(1, 1) ' Fügt die Daten ab Zelle A1 ein
wsDestination.Protect "iso17025" ' Schreibschutz wieder setzen
wbSource.Close False ' Schließt die Quelldatei ohne zu speichern
End If

' Daten kopieren für PlateCode4
If PlateCode4 <> "PLT" Then
Set wbSource = Workbooks.Open(PfadPlateCode4)
Set wsSource = wbSource.Sheets(1) ' Annahme: Daten befinden sich im ersten Arbeitsblatt
Set wsDestination = ThisWorkbook.Sheets("Input4") ' Definiert Ziel-Tabellenblatt
wsDestination.Unprotect "iso17025" ' Schreibschutz aufheben
wsDestination.Cells.Clear
wsSource.UsedRange.Copy wsDestination.Cells(1, 1) ' Fügt die Daten ab Zelle A1 ein
wsDestination.Protect "iso17025" ' Schreibschutz wieder setzen
wbSource.Close False ' Schließt die Quelldatei ohne zu speichern
End If

Application.ScreenUpdating = True 'schaltet die Bildschirmaktualisierung wieder an

End Sub
AW: application.screenupdating = false funktioniert nicht
Onur
Und wie äussert sich das?
AW: application.screenupdating = false funktioniert nicht
Hauke
Ich starte den Makro über einen Button im Tabellenblatt "Evaluation", am Ende wird jedoch zum Beispiel das Tabellenblatt "Input 1" angezeigt, in das die Daten kopiert wurden.
AW: application.screenupdating = false funktioniert nicht
Onur
Was hast du erwartet? Du hast ja auch vor dem Ende noch die Bildschirmaktualisierung (so, wie es sich gehört) wieder eingeschaltet.
AW: application.screenupdating = false funktioniert nicht
Onur
Sobald du sie wieder einschaltest, wir alles Unterdrückte wieder nachgeholt.
AW: application.screenupdating = false funktioniert nicht
Hauke
ok, hab meinen Fehler verstanden. Ich muss vor dem wieder einschalten zurück in das gewünschte Tabellenblatt springen. Eigentlich logisch. Danke für die schnelle Hilfe.
Gerne !
Onur