AW: Absturz nach DoEvents...
08.03.2005 17:01:50
Wieland
Hallo Josef, vielen Dank für die Antwort.
So gut sind meine VBA-Kenntnisse nun auch nicht, aber ich komme doch einigermaßen klar. Man betritt einfach immer wieder Neuland, wo es dann hapert. Zu meinem Problem:
Ich möchte aus einer Mappe heraus, von der aus ich Module kopiere etc. auch Tabellenblätter austauschen. Diese möchte ich aber vorher sehen, daher die Aktivierung des Blattes. Dies ist auch der Grund, weshalb zwei Mappen aktiv sind, wobei es dann zum Absturz kommt. Ich möchte quasi "dialogunterstützt" sehen, welches Blatt ich gerade in welcher Mappe austausche. Ich weiß, dass man das ganze auch in Excel ohne VBA lösen könnte, aber wenn man mal mehrere Mappen zu bearbeiten hat ist man mit VBA einfach besser dran. Anbei ein Teil des noch unvollständigen Kodes.
Gruß Wieland
Private Declare
Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer
Option Explicit
Sub Blätter_tauschen()
'Version vom 8-3-05
Dim Ok As Variant
Dim Blatt, Mappe1, Pfad1, Datname1, Mappe2, Pfad2, Datname2 As String
Application.EnableEvents = False 'Makros ausschalten, auch Auto_open !
'Auswahl der Mappe:
ChDrive "H:\Wartung"
Mappe1 = Application.GetOpenFilename("Excel-Arbeitsmappen (*.xls),*.xls", 1, " Welche Excel-Mappe soll geändert werden ?")
If Mappe1 = False Then Exit Sub
Pfad1 = Left(Mappe1, InStrRev(Mappe1, "\"))
Datname1 = Right(Mappe1, Len(Mappe1) - InStrRev(Mappe1, "\"))
Workbooks.Open Filename:=Mappe1, UpdateLinks:=0
Ok = MsgBox(" Bitte das Blatt auswählen, das getauscht werden soll . . ." & vbLf & vbLf & " Weiter mit < ENTER >", vbOKOnly, _
" Blätter tauschen")
'Unterbrechen der Programmausführung
Do
DoEvents
If (GetAsyncKeyState(&HD)) <> 0 Then Exit Do 'Hexadezimalcodeeingabe ist erforderlich!
Loop
'*************Absturz********************
Blatt = ActiveSheet.Name
ActiveSheet.Delete
End Sub