• 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.

Excel VBA code verbeteren

Status
Niet open voor verdere reacties.

MJONK

Gebruiker
Lid geworden
14 dec 2008
Berichten
238
Goedemiddag allemaal,

Ik lees hier vaak dat in code de termen select en activate vermeden moeten worden.

Echter dit lukt mij niet en ik zou hier graag wat hulp bij kunnen gebruiken om mijn kunsten te verbeteren.

Onderstaande code en mijn opmerkingen erbij:

Code:
 Application.ScreenUpdating = False 'zorgt ervoor dat je niet ziet wat de macro doet
    
    'in onderstaand stuk wordt blad 1 gekopieerd naar blad 2
    Sheets(1).Activate
    Columns("A:N").Select
    Selection.Copy
    Sheets(2).Select
    Range("A1").Select
    ActiveSheet.Paste
    Columns("A:N").EntireColumn.AutoFit


    'hieronder wordt de inhoud van het klembord geplakt op blad 1 en tekst naar kolommen gedaan.
    Sheets(1).Select
    MsgBox "Neem ZMM110 op het klembord en druk op OK om verder te gaan"
    Sheets(1).Range("A1:N40000").ClearContents
    Sheets(1).Range("A1").Select
    Sheets(1).Paste
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(55, 1), Array(60, 1), Array(77, 1), _
        Array(80, 1), Array(88, 1), Array(104, 1), Array(107, 1), Array(122, 1), Array(131, 1), _
        Array(138, 1), Array(151, 1), Array(186, 1)), TrailingMinusNumbers:=True
    Cells.Select
    Cells.EntireColumn.AutoFit
    
    
    'voegt een datum in die gebruikt kan worden in tabblad 3
    Range("N1").Value = Date
    
    
    
    
    'selectie wordt op een bepaald punt (naar keuze) gezet voor eind van de macro.
    
   
    Application.ScreenUpdating = True 'zorgt ervoor dat de eerste handeling weer ongedaan wordt gemaakt.
     Sheets(3).Activate
     
     
     
End Sub



[I]Kan ik hier de bovenste drie regels vervangen door: sheets(1).columns("A:N").copy ??
Vervolgens de andere 2 regels door: sheets(2).range("A1").paste


in mijn denkwijze moet het zo lukken, echter als ik het uitprobeer loop ik steeds vast. (bovenstaand is opgenomen met de macro recorder)[/I]


Met vriendelijke groet,

MJONK
 
Laatst bewerkt:
Beste Mjonk,

Zou er eerst voor kunnen zorgen dat je opgenomen macro werkt voordat je de code hier plaatst?
 
Hallo Enijhuis,


de code werkt prima! alleen ik vind het er niet netjes uitzien. Als ik de gemiddelde code hier op internet zie vind ik dat die van mij simpeler zou moeten kunnen, alleen lukt dat juist nog niet.

Mvg.
 
Laatst bewerkt:
Zo ziet het er al (iets) beter uit

Code:
Sub DoeIets()

    Const DATAKOLOMMEN = "A:N"
    
    On Error GoTo ErrorHandler
    
    'Zet schermverversing uit
    Application.ScreenUpdating = False
    
    'in onderstaand stuk wordt blad 1 gekopieerd naar blad 2
    ThisWorkbook.Sheets(1).Range(DATAKOLOMMEN).Copy
    
    With ThisWorkbook.Sheets(2)
        .Activate
        .Cells(1).Select
        .Paste
        .Columns(DATAKOLOMMEN).EntireColumn.AutoFit
    End With

    'hieronder wordt de inhoud van het klembord geplakt op blad 1 en tekst naar kolommen gedaan.
    MsgBox "Neem ZMM110 op het klembord en druk op OK om verder te gaan", vbInformation
    
    With ThisWorkbook.Sheets(1)
        .Range(DATAKOLOMMEN).ClearContents
        .Cells(1).Select
        .Paste
    
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(55, 1), Array(60, 1), Array(77, 1), _
            Array(80, 1), Array(88, 1), Array(104, 1), Array(107, 1), Array(122, 1), Array(131, 1), _
            Array(138, 1), Array(151, 1), Array(186, 1)), TrailingMinusNumbers:=True
        
        .UsedRange.EntireColumn.AutoFit
        'voegt een datum in die gebruikt kan worden in tabblad 3
        .Range("N1").Value = Date
    End With
    
    ThisWorkbook.Sheets(3).Activate

CleanUp:
    'Zet schermverversing aan
    Application.ScreenUpdating = True
    Exit Sub
ErrorHandler:
    MsgBox "Onverwachte fout:" & Err.Description & " (" & Err.Number & ")", vbExclamation
    Resume CleanUp
End Sub
 
hallo,

Ziet er inderdaad al wat beter uit! helaas krijg ik wel nog een fout bij het plakken op sheets(2)

volgens mij gaat hier iets mis:

With ThisWorkbook.Sheets(2)
.Activate
.Cells(1).Select
.Paste
.Columns(DATAKOLOMMEN).EntireColumn.AutoFit
End With


Ik krijg de volgende melding:

Methode select van klasse range is mislukt (1004).


mvg.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan