[VBA] Range toekennen aan een variabele & traagheid na print

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi medetweakers :)

Ik heb voor m'n werk een Excel tooltje gemaakt mbv VBA dat me helpt bij het uitpluizen van de correcte IATA taxes en tariffs voor vliegtuigtickets. De bedoeling is het juiste bedrag te berekenen en reeks FQT+ commando's te genereren voor het GDS systeem dat we gebruiken.

Voorlopig zit in dat toolje een stuk VBA-code met hardcoded ranges. Ik zou daar graag vanaf willen stappen, zodat ik niet telkens die ganse code moet overlopen om alles een paar rows op te schuiven als er iets nieuws bij komt kijken.

Het volgend stukje code zorgt voor nogal wat kopbrekerij ^^"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub getRanges()
    Dim wxRange, allRange As Range
    Dim txRange As Range
    Dim rangeStr As String
    
    Set allRange = Worksheets("Refund").UsedRange
    
    'Taxes range
    wxRange = allRange.Find("TAXES").Offset(0, 0).Address
    rangeStr = rangeStr + CStr(wxRange)
    wxRange = allRange.Find("SUBTOTAL").Offset(-1, 0).Address
    rangeStr = rangeStr + CStr(wxRange)
    
    'For info only. To be removed
    MsgBox "txRange: " + CStr(txRange) + " - xwRange: " + CStr(wxRange), vbInformation

End Sub

Hoe kan ik de gevonden wxRange toekennen aan de variabele txRange? Ik zoek me hier onnozel naar en heb nog geen oplossing gevonden :s Ik dacht dat "Set txRange = wxRange" wel zou lukken, maar dat is dus niet het geval D: Toch zijn beide variabelen van het type "Range".

Voorts ziet er ook nog een stukje code in om een rapportje te printen:
code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub CmdPrint_Click()
    Dim printRange As Range

    With ActiveSheet.PageSetup
        .PrintArea = Worksheets("Refund").UsedRange.Address
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveSheet.PrintOut From:=1, To:=1

End Sub

Zodra die code wordt uitgevoerd is de ineens gans excel super traag. Enig idee waar dit aan kan liggen?

't gaat om Excel 2000 >_<

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Verwijderd schreef op vrijdag 15 oktober 2010 @ 12:34:
Toch zijn beide variabelen van het type "Range".
Nee, wxRange is een variant-string met het adres erin. Als je dim a,b as type doet, is a een variant. Met Range([string]) kun je er weer een range van maken, of je kunt gewoon dat .Address niet daar gebruiken waar je dat nu doet...
Zodra die code wordt uitgevoerd is de ineens gans excel super traag. Enig idee waar dit aan kan liggen?
Printen op de achtergrond op een trage pc?
't gaat om Excel 2000 >_<
Deze versie van Excel krijgt geen updates meer en is een security risk... :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

de beschikbare vba-afdrukobjecten zijn berucht om hun traagheid. afdrukken op achtergrond en xlmcode gebruiken kan helpen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks voor de tips (^_^)b

Dit stukje code doet exact wat ik nodig heb.
code:
1
2
3
4
5
6
Set wxRange = allRange.Find("TAXES").Offset(0, 1)
rangeStr = Replace(CStr(wxRange.Address), "$", "")
Set wxRange = allRange.Find("TAX TOTAL").Offset(-1, 1)
rangeStr = rangeStr + ":" + Replace(CStr(wxRange.Address), "$", "")
Set txRange = Range(rangeStr)
rangeStr = ""


Voor het printen lijkt het niet zo een pc probleem te zijn. Het is een Intel Core 2 Duo E6600.
Voorts print het zo goed als onmiddellijk, maar het is eenmaal de printopdracht gegeven dat m'n excel sheet traag reageert. Als ik het sluit en opnieuw open is het weer in orde, totdat ik weer eens die printfunctie gebruik.