[vb6sp6 & MS Excel 2K] Afvangen van #WAARDE!

Pagina: 1
Acties:

  • DPLuS
  • Registratie: April 2000
  • Niet online
Ik heb een applicatie die via Excel Automation wat waardes uit het worksheet haalt.
Hier een regeltje uit die code:

code:
1
2
strContents = strContents & "Nortel_oplospercentage = '" & _
Replace(CStr(Round(xlApp.Worksheets("totaal").Range("M27"), 1)), ",", ".", , , vbTextCompare) & "', " & vbCrLf


De waarde die uit de worksheet gehaald wordt is een onafgerond decimaal (dus bijv.: 73,424875) die ik dan met de functie round afrond naar 1 cijfer achter de komma.
Daarna zoek ik met replace naar komma's en vervang ze met een punt omdat ik strContents nl. in een sql-bestand kopieer en daarna in MySQL importeer.

Maar het probleem is nu dat het af en toe kan voorkomen dat in een cel waarvan ik de waarde wil ophalen geen geldige waarde staat.
Dan staat er dus zoiets als: #WAARDE!.
Hoe kan ik nu het beste deze error afhandelen in mijn VB-app?
Zelf dacht ik aan:
Visual Basic:
1
2
3
4
5
if CStr(xlApp.Worksheets("totaal").Range("M27")) = "#WAARDE!" then 
    msgbox "Fout!"
else
    GaDoor
endif


Maar misschien bestaat hier wel een standaard check voor ofzo??

[ Voor 18% gewijzigd door DPLuS op 13-07-2004 09:44 ]


  • Schonhose
  • Registratie: April 2000
  • Laatst online: 18-05 10:39

Schonhose

Retro Icoon

In excel heb je de functie IsError. Ik zou hiermee in je sheets de errorchecking doen en missing values in vullen (bijv -999). Dan gaat je App niet over de kop.

Als je het in VB wilt doen dan misschien zoiets?

code:
1
2
3
4
5
if CStr(xlApp.IsError(xlApp.Worksheets("totaal").Range("M27"))) = True then 
    msgbox "Fout!"
else
    GaDoor
endif


Theoretisch check je nu niet alleen op waarde maar ook op DIV/0 enzo. Ik weet niet of het werkt.

[ Voor 8% gewijzigd door Schonhose op 13-07-2004 09:57 ]

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


  • DPLuS
  • Registratie: April 2000
  • Niet online
Inderdaad, uit de Excel Manual:


IS-functies
Zie ook

[...]

De functie Resulteert in WAAR als
ISLEEG waarde verwijst naar een lege cel.
ISFOUT2 waarde verwijst naar een foutwaarde met uitzondering van #N/A.
ISFOUT ISFOUT waarde verwijst naar een foutwaarde (#N/B, #WAARDE!, #VERW!, #DEEL/0!, #GETAL!, #NAAM?, of #LEEG!).
[...]


Alleen kan ik in mijn Nederlandse versie van Excel geen Engelse functienamen gebruiken. Bestaat er een patch / add-on waardoor dat wel mogelijk wordt?

[ Voor 76% gewijzigd door DPLuS op 13-07-2004 13:24 ]