Toon posts:

[VB6/Excel] Excel.application.run gebruik van range

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer met vb6 een groot aantal regressie uit te voeren in Excel. Ik heb daarover vanmorgen ook een topic geopend (\[VB6/Excel]Bij gebruik van ATPVBAEN.XLA!Regress-> error 1004)
Inmiddels werkt het maken van de regressietabel prima, maar omdat ik een heleboel achter elkaar wil doen moeten ook de regressietabellen achter elkaar.
Het gaat om dit stukje code:
Visual Basic 6:
1
2
3
4
5
  oExcel.Run "ATPVBAEN.XLA!Regress", Worksheets(sBlad1Naam).Range(sResultaatKolom & "1:" & sResultaatKolom & lEindeRijResultaat), _
     Worksheets(sBlad1Naam).Range(sStartKolom & "1:" & sEindKolom & lEindeRijResultaat), _
     False, True, 95, _
     Worksheets(sResultaatBladnaam).Range(Chr(lMaxColumnResultaat + Asc("A") - 1) & "$1"), _
     False, False, False, False, , False

Via regel 4 kun je opgeven waar de uitkomst heen moet.
Wat ik dus in mijn loopje doe, is dat ik eerst bepaal wat de meest rechtse kolom is met data, daar 1 bij op tel en vervolgens die waarde meegeef in de functie.
Omdat de Range met letters voor de kolomwaarden werkt gebruik ik de chr(), etc. Dit werkt prima totdat ik 3 uitkomsten heb geplaatst en ik voorbij kolom Z kom en dus in de AA, AB en AC kolommen terecht kom.
Nu kan ik dat natuurlijk afvangen door
Visual Basic 6:
1
Chr(lMaxColumnResultaat + Asc("A") - 1)
te vervangen door een eigen ingewikkelde functie die wel AA, AB, enz. teruggeeft, maar ik vraag me af of er niet een meer elegantere oplossing is.
Ik heb al geprobeerd met
Visual Basic 6:
1
Worksheets(sBlad1Naam).Range(Cells(1, lResultaatKolom), Cells(lEindeRijResultaat, lResultaatKolom))
, maar het gebruik van Cells() mag/kan hier niet.
Omdat de Run() functie een algemene functie is, is de help erg summier en kom ik er niet langer uit.

Heeft iemand een idee hoe dit elegent op te lossen?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Zoiets:
Visual Basic .NET:
1
2
3
4
5
6
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range
    Set rng = Sheet1.UsedRange
    
    MsgBox rng.Columns
End Sub

Zo heb je de meest rechtse column die op dat moment in gebruik is.

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
@MTWZZ,

Bedankt voor je reactie, maar het ging me niet om de meeste rechtse kolom, maar om het gebruik in Application.Run.
Ik heb het inmiddels opgelost door een eigen functie te schrijven waar een kolomindex ingaat en de juiste kolomnaam terug geeft. Dus index 1 geeft 'A', 26 geeft 'Z' en 28 geeft 'AB'
Ik dacht dat dat een wat ranzige oplossing was, maar nu ik het heb ben ik er best tevreden mee. ;)

Ik gebruik overigens altijd deze code om mijn laatste rij en kolom te vinden:
Visual Basic 6:
1
2
3
4
5
6
  'Find last used cell:
  myLastCell = oExcel.ActiveCell.SpecialCells(xlLastCell).Address
  'Find last used row:
  myLastRow = oExcel.Range(Cells(1, 1), myLastCell).Rows.Count
  'Find last used column:
  myLastColumn = oExcel.Range(Cells(1, 1), myLastCell).Columns.Count