Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

Excel cells vullen vanuit VBA geeft soms afgekapte waarden

Pagina: 1
Acties:

  • DingieM
  • Registratie: Juni 2005
  • Laatst online: 07-11 10:02
Hallo,

Ik loop tegen een vreemd probleem aan bij het vullen van bepaalde Excel 2003 cellen vanuit VBA macro's.

Via deze macros communiceer ik met een DLL die een aantal bytes teruggeeft van een bepaald stuk geheugen, en die bytes moeten vervolgens in een cell geplaatst worden.
Dit gaat bijna altijd goed, maar soms lijkt Excel zelf zich te verslikken in het type.
De uitgelezen bytes worden omgezet naar hexadecimaal en in een string gezet, en de string-inhoud gaat naar een cell.
Tijdens debuggen zie ik dat direkt voor het aanroepen van Cell(row, col) = <string-variabele> dat de inhoud van de string ansich goed is.
Echter direkt na de aanroep zie ik dat in Excel maar de helft of een gedeelte werd ingevuld...vreemd.
Ditzelfde gebeurt ook als ik ipv. bytes floating point getallen wil invullen...

Is er een bepaalde geheime format-setting in Excel die erg hardnekkig is?
Het lijkt systematisch te gebeuren: het is niet zo dat de cellen willekeurig de verkeerde inhoud krijgen...

Wie kan mij helpen om verder te probleem te onderzoeken?

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Lastig raden zo zonder code of voorbeelden... worden de strings altijd op dezelfde positie (dus soort max. lengte) afgebroken? Of kan het zijn dat er een karakter in voorkomt (0x00, 0x0D, 0x0A) waarop de boel wordt afgebroken?

  • DingieM
  • Registratie: Juni 2005
  • Laatst online: 07-11 10:02
Om deze plompe code gaat het :-)

'Write actual result in the spreadsheet
If ActualResultKeyWordFound Then
Cells(RowNr, iActualResultPos) = ActualResult
End If

De hexadecimale byte strings zijn ieder keer hetzelfde, ook qua lengte.
De variabele <ActualResult> wordt via ByRef als Variant doorgegeven aan functies die de variabele vult.
Dus totaal geen stringente type hantering.

De Excel macro leest een regel in een worksheet, maakt vervolgens contact met de DLL en spuugt het resultaat terug aan het einde van die regel.
De regels zijn in feite test instructies om geautomatiseerde tests uit te voeren.

  • DingieM
  • Registratie: Juni 2005
  • Laatst online: 07-11 10:02
Ok, probleem gevonden.

Excel doet af en toe raar als ik niet expliciet zeg of de waarde als text weergegeven moet worden of niet, vooral met getallen die beginnen met een "0". De Cell zelf is al geformatteerd als <General>
Als oplossing kan ik gewoon " ' " voor de string plakken alvorens te dumpen in een Cell.
Of expliciet de Cell van het formaat "@" voorzien...