[EXCEL] Makkelijke Macro vraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mystikal
  • Registratie: Januari 2001
  • Nu online

Mystikal

It never hurts to help!

Topicstarter
Ik heb een macro opgenomen welke een tekstbestand wat uit Oracle (ERP systeem) komt, meteen juist format. Columnbreedte, bold headers, etc EN wat overtollige regels weggooien. Bij dat laatste gaat het mis, maar ik snap niet waarom:

Gedeeltelijke code is: Cells.Select
code:
1
2
3
4
5
6
7
8
9
10
11
12
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("C8").Select
    Application.Goto Reference:="R15000C4"
    Selection.End(xlUp).Select
    Range("D89:D90").Select
    Range("D90").Activate
    ActiveWindow.SmallScroll Down:=-19
    Range("D76:D90").Select
    Range("D90").Activate
    Selection.EntireRow.Delete


Kort gezegd, ik sort op accountnummer, de regels met wat streepjes en andere onzin wat uit de text file van oracle komt, staan dan onderaan. Ik ga naar regel 15000 (zoveel regels zal ik nooit hebben) en met shift+end+pijltje naar boven ga ik naar de laatste vervuilde regel. Dit zijn elke keer evenveel regels. Ik selecteer de cel en ga precies 13 regels naar boven (D76:D90) om de selectie te vergroten.
Rechtermuisknop, delete, delete rows.

Als test maak ik de volgende keer de export file van Oracle wat langer, maar hij delete dan vervolgens teveel regels aan de onderkant. Het lijkt erop dat hij de selectie met de shift+end combinatie niet als flexibel ziet maar als hardcoded cell selectie (in mijn geval D90).

Suggesties?

Basement Bios ---- Exo-S


Acties:
  • 0 Henk 'm!

  • Mystikal
  • Registratie: Januari 2001
  • Nu online

Mystikal

It never hurts to help!

Topicstarter
Niemand?

Basement Bios ---- Exo-S


Acties:
  • 0 Henk 'm!

  • Mental
  • Registratie: Maart 2000
  • Laatst online: 20-10-2020
Het lijkt erop dat hij de selectie met de shift+end combinatie niet als flexibel ziet maar als hardcoded cell selectie (in mijn geval D90).
Helemaal gelijk, dit is overigens geen 'makkelijke' macro vraag maar toch een wat geavanceerdere.
Je kunt natuurlijk met een simpel vbscriptje alle regels loopen en checken of de regel wel data bevat die je wilt hebben, als dat niet zo is de regel verwijderen.

Acties:
  • 0 Henk 'm!

  • pasta
  • Registratie: September 2002
  • Laatst online: 12-01 14:16

pasta

Ondertitel

Excel en aanverwanten zijn onderdeel van Office en daar hebben we een heel mooi forum voor genaamd Officesuites en -software. Ik verplaats je topic daar dan ook even naar toe. :)

Signature


Acties:
  • 0 Henk 'm!

Verwijderd

niet kicken(schopreactie) binnen 24u!

in de werkbalk die verschijnt bij macro-opname kan aangeduid worden dat dit relatief moet gebeuren (knop relatieve verwijzing). deze kan tijdens de opname aan- en uitgeschakeld worden.
excel produceert dan code zoals :
Visual Basic:
1
2
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select

een kortere mogelijkheid : vindt laatste cel in kolom D, en verwijder deze samen met de 12 erbovenliggende cellen :
Visual Basic:
1
range("d15000").End(xlUp).Offset(-12).Resize(13).EntireRow.Delete

Acties:
  • 0 Henk 'm!

  • Mystikal
  • Registratie: Januari 2001
  • Nu online

Mystikal

It never hurts to help!

Topicstarter
Excel en aanverwanten zijn onderdeel van Office en daar hebben we een heel mooi forum voor genaamd Officesuites en -software. Ik verplaats je topic daar dan ook even naar toe. :)
Sorry, niet goed opgelet!
Verwijderd schreef op donderdag 02 juli 2009 @ 14:44:
niet kicken(schopreactie) binnen 24u!

in de werkbalk die verschijnt bij macro-opname kan aangeduid worden dat dit relatief moet gebeuren (knop relatieve verwijzing). deze kan tijdens de opname aan- en uitgeschakeld worden.
excel produceert dan code zoals :
Visual Basic:
1
2
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select

een kortere mogelijkheid : vindt laatste cel in kolom D, en verwijder deze samen met de 12 erbovenliggende cellen :
Visual Basic:
1
range("d15000").End(xlUp).Offset(-12).Resize(13).EntireRow.Delete
Hmm de knop relatieve verwijzingen ken ik niet. Ik zal eens gaan zoeken. Er zijn maar 2 knoppen... en het is die andere... 8)7 . Ik neem aan dat ik deze tijdens de macro kan in en uitschakelen.. Het rechtstreeks in visual basic ben ik geen kei in. Tenzij iemand kan zeggen welke rij uit de code in de OP eruit moet en welke ervoor in de plaats moet 8)7

[ Voor 5% gewijzigd door Mystikal op 02-07-2009 16:09 ]

Basement Bios ---- Exo-S


Acties:
  • 0 Henk 'm!

  • mberns
  • Registratie: November 2004
  • Nu online

mberns

Haribo-aap

Is het niet mogelijk om dit met een filter op te lossen?

Gewoon even een lijst aanmaken met toegestane accounts (moet je er niet elke maand nieuwe bijmaken, maar ken jouw situatie niet precies) en vervolgens met advanced filter een filter instellen?

Een andere mogelijke oplossing, het precies andersom te doen. Dus sorteren op account vervolgens in de eerste rij gaan staan van de kolom met accounts en ctrl + shift + pijltje naar beneden vervolgens die rijen selecteren, kopieren en verder werken?

(In mijn geval werkt dit, in de kolom met account staan onder de "geldige" regels geen regels met een waarde bij account)

subteam: De Apen


Acties:
  • 0 Henk 'm!

Verwijderd

de regels 4 tot en met 12 uit de oorspronkelijke code vervang je door de regel uit het "kortere mogelijkheid"-voorbeeld.
de vb-editor kan je met alt-F11 oproepen of via extra->macro->macro's->macro aanduiden->bewerken te kiezen.

maar het is mogelijk het gewenste resultaat te bereiken via het gepast wisselen tussen relatief/absoluut opnemen.

Acties:
  • 0 Henk 'm!

  • Mystikal
  • Registratie: Januari 2001
  • Nu online

Mystikal

It never hurts to help!

Topicstarter
Verwijderd schreef op donderdag 02 juli 2009 @ 16:21:
de regels 4 tot en met 12 uit de oorspronkelijke code vervang je door de regel uit het "kortere mogelijkheid"-voorbeeld.
de vb-editor kan je met alt-F11 oproepen of via extra->macro->macro's->macro aanduiden->bewerken te kiezen.

maar het is mogelijk het gewenste resultaat te bereiken via het gepast wisselen tussen relatief/absoluut opnemen.
Dank je! Ik ben voor het ouderwetse opnemen gegaan en.....

Works like a charm *O*

Bedankt voor je hulp!

Basement Bios ---- Exo-S


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 28-09 18:33
Snap je ook waarom het niet werkte.... ? (Denk het niet, daarom even uitleg:)

Regel 7 maakt regel 5/6 helemaal overbodig. Eerst vanaf regel 15000 de onderste regel zoeken en dan met code regel 7 selecteer je met een absolute verwijzing bepaalde rijen....
Pagina: 1