• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

"application.screenupdating = false" vertraagd mijn macro

Status
Niet open voor verdere reacties.

mediomatri

Gebruiker
Lid geworden
29 nov 2013
Berichten
6
Goedenmiddag

Ik heb een macro waarbij ik de code "application.screenupdating = False" gebruik.
Enerzijds omdat ik het irritant vind dat je anders de schermpjes heen en weer ziet gaan, maar vooral ook in de hoop de macro hiermee wat sneller te laten zijn.
Het tegengestelde is echter waar. Als ik deze code niet gebruik is hij minuten sneller klaar.
Weet iemand waar dit door wordt veroorzaakt? Is er een combinatie met deze code die de boel juist vertraagd ipv versneld?

Hieronder de code:

Code:
Sub SelectData()
                                              
    Dim Customer As String
    Dim Datum As String
    Dim Rijen As Long

'Selecteren Klantnummer
Customer = InputBox(prompt:="Please enter Customernumber", _
                                             Title:="Data Entry")
     If Customer = Empty Then Exit Sub  'Terminates here if empty
Range("D11").Value = Customer

' screenupdating uit
With Application
 
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .DisplayAlerts = False  
    .StatusBar = True
    .EnableEvents = False
    
End With

    Application.StatusBar = ">>>> DATA IS BEING IMPORTED... THIS MAY TAKE A WHILE... THANKS FOR YOUR PATIENCE! <<<<"
    
'datum bepalen voor opslaan bestand
Range("J1").Select
ActiveCell.FormulaR1C1 = "=+YEAR(TODAY())&MONTH(TODAY())&DAY(TODAY())"
Datum = Range("J1")

'**** Ophalen van de Seqfile van de FTP
        Workbooks.Open Filename:="ftp://" & FTPusername & ":" & FTPpassword & FTPPath & FTPFile

'**** Tekst naar kolommen omzetten       
        
        Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:="|"
        
           
'selectie klantgegevens
    Windows("artikel_tot_110").Activate
    Selection.AutoFilter
'tellen aantal rijen
    Rijen = Range("A" & Rows.Count).End(xlUp).Row
'klantgegevens filteren
    ActiveSheet.Range("$A$1:$FB$" & Rijen & "").AutoFilter Field:=9, Criteria1:= _
        "Maakdeel"
    ActiveSheet.Range("$A$1:$FB$" & Rijen & "").AutoFilter Field:=10, Criteria1:= _
        "MAAAA"
    ActiveSheet.Range("$A$1:$FB$" & Rijen & "").AutoFilter Field:=1, Criteria1:= _
        "=" & Customer & "*", Operator:=xlAnd
       
'kopieren gegevens
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
'plakken gegevens in basisbestand
    Windows("product margins ALGEMEEN.xlsm").Activate
    Sheets("artikel_tot_110").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

'sluiten artikelbestand
    Windows("artikel_tot_110").Activate
    ActiveWorkbook.Saved = True
    Application.CutCopyMode = False
    ActiveWorkbook.Close
    
'kopieren maakdelen
    Windows("product ALGEMEEN.xlsm").Activate
    Sheets("artikel_tot_110").Select
    Range("A3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
'plakken in summary
    Sheets("summary").Select
    ActiveSheet.Outline.ShowLevels RowLevels:=2
    Range("D13").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True

'hulpje einde markering doorvoeren formules
    Range("D13").Select
    Selection.End(xlToRight).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "x"
'formules naar einde kopieren
    Range("D14:D85").Select
    Selection.Copy
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveSheet.Paste
'opmaak kolommen
    Range("D13:D85").Select
    Selection.Copy
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

    Selection.ColumnWidth = 15
    Rows("13:13").RowHeight = 113.3

'"filters" inklappen
    ActiveSheet.Outline.ShowLevels RowLevels:=1

'verwijderen "button"
    ActiveSheet.Shapes.Range(Array("Striped Right Arrow 1")).Delete
        
    Range("D11").Select
   
'opslaan bestand met klantnummer en datum

    ActiveWorkbook.SaveAs Filename:= _
        "G:\Output\" & Customer & " -productS" & Datum & ".xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
        
' screenupdating aan
With Application
 
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    .DisplayAlerts = True
    .StatusBar = False
    .EnableEvents = True
    
End With
  
'textbox met bericht dat data is geimporteerd
    MsgBox "Data Imported" & vbNewLine & "Good luck analyzing!"
    
End Sub
 
Laatst bewerkt:
Je doet er verstandiger aan je macro zo te herschrijven dat er geen .select of .activate meer in voorkomt.

En zoek ook de term 'currentregion' eens op in de hulpbestanden van de VBEditor.
 
Laatst bewerkt:
Bedankt voor je tips

Heb een paar wijzigingen doorgevoerd. Probleem blijft helaas bestaan.
Ik vermoed dat het zit in het stuk waar ik een bestand van onze server afhaal en de actie daarna (text to columns)

Code:
**** Ophalen van de Seqfile van de FTP
        Workbooks.Open Filename:="ftp://" & FTPusername & ":" & FTPpassword & FTPPath & FTPFile

'**** Tekst naar kolommen omzetten       
        
        Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:="|"

Ik ga verder zoeken.
 
In Application.screenupdating zit het zeker niet.

Wat voor soort bestand haal je op (csv , xlsx )?
 
Laatst bewerkt:
Om 'tekstnaarkolommen' te vermijden kun je dit proberen:

Code:
Workbooks.Open "G:\OF\test1.csv", , , 6, , , , , "|"
 
Laatst bewerkt:
Wederom bedankt, dit lijkt wel de geode richting te zijn!

Nog 1 vraag. Hoe krijg ik deze code goed geintegreerd in "mijn code" ?
ipv wat ik nu heb staan bij workbooks.open... :confused:

Dit is begin van de code waar het om gaat.

Code:
'**** FTP login gegevens
Public Const FTPusername As String = "xxx"
Public Const FTPpassword As String = "yyy"
Public Const FTPPath As String = "@zzz/"
Public Const FTPFile As String = "artikel_tot_110"

Sub TEST()

 
    Workbooks.Open Filename:="ftp://" & FTPusername & ":" & FTPpassword & FTPPath & FTPFile
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan