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

Macro inhoud maken

Status
Niet open voor verdere reacties.

Senso

Inventaris
Lid geworden
13 jun 2016
Berichten
10.986
Besturingssysteem
W10 Pro en W11 Pro
Office versie
Office 2007 H&S en Office 2021 Prof Plus
Excel 2007 H&S
Ik heb een document met allemaal persoonlijke info. Ik voeg handmatig een filter uit op werkblad 1 en kopieer dat naar werkblad 4. Daar pas ik wat zaken aan omdat het niet op A4 staand past. Nu wilde ik een aantal vaste zaken uitvoeren met een macro. Dus ik probeer dat op te nemen. Helaas krijg een hele waslijst met honderden regels waar ik niet wijs uit kan worden.

Het onderstaande moet uitgevoerd worden nadat ik de handmatige bewerkingen heb uitgevoerd.
Wie wil de regels schrijven?

In macro:
1. Zet Marges op links/rechts op 0
2. Zet Rijhoogte op 17
3. Zet Lettergrootte op Calibri en 11pt
4. Zet Afdrukstand > Staand
5. Centreer inhoud van kolom C
6. Verberg kolom B, E‚ I en L
7. Stel kolombreedte
A: 4,57 | C: 7,71 | D: 2 | F: 12,71 | G: 7,14 | H: 3,60 | J: 5 | K:12,71 | M: 18,29
N: 4,43 | O:6 | P:6

De macro mag alleen uitgevoerd worden op het betreffende werkblad. Want uitvoering op werkblad 1 zou een ramp zijn. De naam van het werkblad is
Filter Gas-Stroom-Water
 
Laatst bewerkt:
De macrorecorder is bijzonder handig voor als je het even niet meer weet (Bijvoorbeeld hoe maak je tekst vet).
Helaas neemt de macrorecorder ook alles op. Ook het selecteren van cellen wat meestal totaal overbodig is.

Ik ga je nog 's een 'gouden' tip geven.

Klik bovenaan in je programmacode aan de zijkant (Dan komt er een onderbrekingspunt; een bruine bol dus)
Vervolgens voer je de programmacode uit. Die zal stoppen bij die bruine bol.
En daarna ga je verder met de F8 toets om regel per regel de code uit te voeren.
Vooral als je twee schermen hebt, kan je ook zeer goed volgen wat er gebeurt.
Zo kan je allicht begrijpen wat alles voorstelt, en eventueel al beginnen schrappen.

Succes ermee.
Indien ik vanavond tijd zou hebben, zou ik het zelfs graag met jou via AnyDesk doorlopen. Helaas ontbreekt me vanavond de tijd. Een andere keer graag.
 
De macrorecorder is bijzonder handig voor als je het even niet meer weet. Blijkbaar dus niet handig! Ik werk liever met opdrachtregels. Al dat overbodige is geen touw aan vast te knopen.
 
Al dat overbodige is geen touw aan vast te knopen.
Dat ligt dan zeer waarschijnlijk aan eigen onkunde.
Weer geen bestand en geen code te vinden. Verwacht je dat iemand het voor je gaat nabouwen?
 
Verwacht je dat iemand het voor je gaat nabouwen? Ja. Wil jij dat niet even doen?

Je pakt een leeg document en voert even de opdrachten uit en dan als je deskundig bent verwijder je de troep. Ik heb de macro ook opgenomen maar ik zou niet weten wat er staat soms heb je herkenning maar veel regels helemaal niet.
 
Goh... macrorecorder is toch wel handig hoor.
Een voorbeeld: Ik weet niet hoe je de breedte van een kolom instelt, en ik weet ook niet hoe je de tekst centreert.
Gevolg: ik neem even de macrorecorder en krijg volgende code:

Code:
Sub Macro2()
'
' Macro2 Macro
'

'
    Columns("C:C").ColumnWidth = 16.86
    Columns("C:C").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub

Vervolgens ga ik dezelfde code opkuisen, en ik laat alles weg wat volgens mij overbodig is. Dus krijg ik deze code:

Code:
Sub Macro2()
'
' Macro2 Macro
'

'
    With Columns("C:C")
        .ColumnWidth = 16.86
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
    End With
End Sub

Uiteraard... je moet wel een beetje snappen waar het om draait. Maar de recorder blijft een hulpmiddel.

De vraag om hulp was toch zeer neutraal gesteld, en hoe kun je nu met een dergelijke vraag een voorbeeld geven?
 
Waarom plaats je hier dan niet even die opgenomen code?
Ik denk dat er dan meer animo is om het voor je op te schonen dan het helemaal na te maken.
 
Code:
Sub Senso()
   With Sheets("Filter Gas-Stroom-Water")
      Application.Left = 0

      With .Cells
         .EntireRow.RowHeight = 17
         .Font.Name = "Calibri"
         .Font.Size = 11
      End With

      .PageSetup.Orientation = xlPortrait

      .Columns("C").HorizontalAlignment = xlCenter

      .Range("B:B,E:E,I:I,L:L").EntireColumn.Hidden = True
      
      .Columns("A").ColumnWidth = 4.57
      .Columns("C").ColumnWidth = 7.11
      .Columns("D").ColumnWidth = 2
      .Columns("F").ColumnWidth = 12.71
      .Columns("G").ColumnWidth = 7.14
      .Columns("H").ColumnWidth = 3.6
      .Columns("J").ColumnWidth = 5
      .Columns("K").ColumnWidth = 12.71
      .Columns("M").ColumnWidth = 18.29
      .Columns("N").ColumnWidth = 4.43
      .Columns("O:P").ColumnWidth = 6
   End With
End Sub
 
Zie dat cow me voor was, zo goed als identiek.

Code:
Sub j()
 With ActiveSheet
     With .PageSetup
      .PrintTitleRows = ""
      .PrintTitleColumns = ""
      .Orientation = xlPortrait
    End With
    .Rows("1:1").Resize(30000).RowHeight = 17
    With .Cells.Font
        .Name = "Calibri"
        .Size = 11
    End With
    .Range("C:C").HorizontalAlignment = xlCenter
    .Range("B:B,E:E,I:I,L:L").EntireColumn.Hidden = True
    .Columns("A:A").ColumnWidth = 4.57
    .Columns("C:C").ColumnWidth = 7.71
    .Columns("D:D").ColumnWidth = 2
    .Columns("F:F").ColumnWidth = 12.71
    .Columns("G:G").ColumnWidth = 7.14
    .Columns("H:H").ColumnWidth = 3.6
    .Columns("J:J").ColumnWidth = 5
    .Columns("K:K").ColumnWidth = 12.71
    .Columns("M:M").ColumnWidth = 18.29
    .Columns("N:N").ColumnWidth = 4.43
    .Columns("O:P").ColumnWidth = 6
 End With
End Sub
 
Waarom plaats je hier dan niet even die opgenomen code?
Ik denk dat er dan meer animo is om het voor je op te schonen dan het helemaal na te maken.

Ja, 'dat helemaal namaken' trek ik in twijfel. En cow18 en JVeer bevestigen dat. Ik heb de opdrachten gegeven die vrij simpel zijn en zij schrijven de code. Vakwerk laat ik aan vakmensen over. Ik ga er mee aan de slag. Bedankt.
 
De macro recorder heeft t geschreven
 
idem en daarna met de grove borstel er door
 
iets voor de TS om over na te denken.
Code:
Sub VenA()
  ar = Split("4.57 0 7.71 2 0 12.71 7.14 3.6 0 5 12.71 0 18.29 4.43 6 6")
  For j = 0 To 15
   Columns(j + 1).ColumnWidth = ar(j)
  Next j
End Sub
 
Die van Cow18 kon ik niet werkend krijgen. Fout 400. Die van JVeer zette de marges links/rechts niet op nul. Toen toegevoegd:

.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)

en dan werkt het goed. Dit alles getest in een test.document. Nu nog testen in het hoofddocument. Maak eerst wel een kopie, want in het orgineel mag niets fout gaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan