Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Macrotekst inkorten  (gelezen 1906 keer)

0 leden en 1 gast bekijken dit topic.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Macrotekst inkorten
« Gepost op: 08 juli 2004, 12:51:57 »
Goedemiddag,

Onderstaand een macro die ik vandaag heb gemaakt via Extra, Macro's, nieuwe macro opnemen, en wat kopieer en plakwerk.

Sub Sommige_formules_absoluut_maken()
Application.ScreenUpdating = False
ActiveSheet.ShowAllData
 Application.Goto Reference:="R7C2"
    Range(Selection, Selection.End(xlDown)).Select
    Range("B7:B5000").Copy
    Range("B7:B5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 Application.Goto Reference:="R7C7"
    Range(Selection, Selection.End(xlDown)).Select
    Range("g7:g5000").Copy
    Range("g7:g5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 Application.Goto Reference:="R7C8"
    Range(Selection, Selection.End(xlDown)).Select
    Range("h7:h5000").Copy
    Range("h7:h5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 Application.Goto Reference:="R7C22"
    Range(Selection, Selection.End(xlDown)).Select
    Range("v7:v5000").Copy
    Range("v7:v5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 Application.Goto Reference:="R7C25"
    Range(Selection, Selection.End(xlDown)).Select
    Range("y7:y5000").Copy
    Range("y7:y5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 Application.Goto Reference:="R7C26"
    Range(Selection, Selection.End(xlDown)).Select
    Range("z7:z5000").Copy
    Range("z7:z5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 Application.Goto Reference:="R7C27"
    Range(Selection, Selection.End(xlDown)).Select
    Range("aa7:aa5000").Copy
    Range("aa7:aa5000").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
Application.Goto Reference:="R6C15"
    Selection.AutoFilter Field:=15, Criteria1:="="
Range("d7").Select
Application.ScreenUpdating = True
End Sub

Ik heb geen inhoudelijke vraag over de macro, maar wel zou ik graag weten of deze macro ingekort kan worden, want hij is wel erg lang geworden.

Wel een klein vraagje nog over de macro: regelmatig komt het getal 5000 terug, bv. B5000, G5000, H5000 enz.
Dit zijn willekeurig gekozen rijnummers in de kolommen om er zeker van te zijn dat de hele inhoud van die kolom wordt meegenomen. Mooier zou het zijn als de range er alsvolgt uit zou zien: (bv voor kolom Z):

Range("z7:laatste cel in kolom Z met inhoud").Copy
    Range("z7:laatste cel in kolom Z met inhoud").Select


Als u verder nog andere suggesties hebt dan hoor ik ze graag !

Bedankt voor alle moeite.

Groeten,
Eric
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline StriKe

  • Ambassadeur
  • *****
  • Berichten: 4.647
  • Geslacht: Man
Re:Macrotekst inkorten
« Reactie #1 Gepost op: 09 juli 2004, 14:15:11 »
Hallo,

Zo'n 'variabele range' kan je bepalen door de 'functie' Currentregion te gebruiken.

Klein voorbeeldje:

Stel je heb in de cellen a1 tot a3 inhoud en ook van b1 tot b3.
In VBA heb je volgende regel:
[a1].currentregion.address

Dan gaat dit als resultaat de range a1:b3 geven.
Je kan maw via currentregion 'aftasten' hoe ver een bereik gaat. Via de eigenschap Count en nog enkele tussenstappen kan je dan te weten komen hoeveel rijen en zo in dat bereik zitten.

Wat het inkorten van je macro betreft: er bestaan veel langere macro's dan deze die jij hier geeft, dus ik zie niet meteen in waarom je deze zou willen inkorten, snelheidswinst gaat het zeker niet (of nauwelijks) opleveren en het houdt risico in ...

Het klopt dat macro's die je 'automatisch opneemt' heel wat standaardwaarden opslaat, maar om na te gaan welke deze precies allemaal zijn ...
Als je dan per toeval 'iets teveel wegneemt' dan ga je volgens mij achteraf hard zoeken naar fouten ...

Mocht je precies kunnen zeggen wat je met die macro wil doen, dan wil ik desnoods wel eens zien of ik hem zelf niet kan schrijven ...

Groeten,
StriKe
0T5326 Dell Computer Corporation, GeForce FX Go5200, Windows XP, Prof, SP2, NL, Mobile Intel(R) Pentium(R) 4 CPU 3.06GHz, 512 MB RAM, HDD:97 GB, NTFS, AVG Anti-Virus, Kerio Personal Firewall, Firefox 2.0, The Bat!

 


www.combell.com