Microsoft Excel

Herbers Excel/VBA-Archiv

Endlosschleife bei worksheet_change-Ereignis



Excel-Version: 10.0 (Office XP)

Betrifft: Endlosschleife bei worksheet_change-Ereignis
von: Marcus
Geschrieben am: 06.06.2002 - 14:57:19

Hallo,

ich habe folgendes Problem:
ein externes Programm schreibt eine 1 in Zelle A1 des Sheets "Daten". In diesem Sheet habe ich diese Routine:


Private Sub worksheet_change(ByVal target As Range)
    With Sheets("daten").QueryTables.Add(Connection:="TEXT;D:\daten.txt", Destination:=Sheets("daten").Range("A3"))
        .Name = "daten"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Jetzt passiert folgendes:
Sobald eine 1 in A1 geschrieben wird, soll Excel eine Textdatei importieren. Das Problem dabei ist, dass der Datenimport von Excel auch als worksheet_change-Ereignis angesehen wird und so eine Endlosschleife daraus resultiert.
Wie kann ich innerhalb dieser Sub die 1 in A1 löschen und es verhindern, dass der Tetximport als change-Ereignis angesehen wird ?
Kann man das change-Ereignis innerhalb der Sub ausschalten ?

Danke Euch !!

  

Re: Endlosschleife bei worksheet_change-Ereignis
von: Andreas
Geschrieben am: 06.06.2002 - 15:09:15

Hallo Marcus,

deaktiviere direkt vor dem Befehl die Events und danach das Aktivieren nicht vergessen!

Also:
Application.EnableEvents = False
Range("A1").Value = ""
Application.EnableEvents = True

Viel Spaß,
Andreas

  

Probiere ich gleich mal aus ! Danke !!
von: Marcus
Geschrieben am: 06.06.2002 - 15:13:11