Avatar billede varst Praktikant
30. maj 2003 - 14:15 Der er 1 kommentar og
1 løsning

Underlig Paste resultat fra VBA script

Hej

Jeg sidder med noget eksternt måleudstyr jeg fjernbetjerner vha Excel og VBA. Jeg skal bruge nogle data fra udstyret, jeg kopiere og indsætter i regnearket. Hvis jeg gør det manuelt, dvs at jeg går over i programmet og klikker Kopi, går over i Excel og klikker Indsæt, så er der ikke noget i vejen. Hvis jeg vha mit vba script:

    PULSEApplication.Project.DisplayOrganiser.DisplayGroups("Function Group").Displays("Output Response(Laser) - Magnitude").Copy
    Range("A1").Select
    ActiveSheet.Paste

hvor første linie er fra måleudstyret, så får jeg et forkert resultat. Så er det igang med at debugge!

Programmet lægger data ind i clipboarded som en tekst fil, og hvis man kigger på denne, så ser en linie ud som følger:

1    1,0000000000e+002    1,25215e-005

og det er rigtigte data. Hvis jeg efter en manuel Kopi Indsætter i en teksteditor, så får jeg det rigtige resultat, ligesom det også er rigtigt i regnearket. Hvis jeg sætter et breakpoint ind efter PULSE.Copy-tingen og før Paste, og kigger på hvad der ligger i clipboarded i en teksteditor, så er det også rigtigt, og hvis jeg Indsætter i regnearket, så er det også rigtigt. Hvis jeg stepper forbi Paste og kigger på regnearket, så skriver den:

1 1,00E+12 1,25E+00

i tre rubrikker selvfølgelig. Nu er tallene blot blevet en anelse større, og ved et nærmere kig, så passer det med decimalerne fra det rigtige resultat, dvs at 100 er blevet 1E10 større og 12,5µ er blevet 1E5 større. Er der nogen der kan gennemskue hvad der går galt? Jeg har prøvet med indsæt speciel, med samme uheld.

Kelvin :-)
Avatar billede martin_moth Mester
31. maj 2003 - 17:59 #1
Mystisk. Prøv at skriv værdierne til en variabel (af passende type), i stedet for at bruge copy. Og skriv så variablen til cellen i stedet for at bruge paste.
Ikke at det burde gøre nogen forskel, men det er da et forsøg værd... Altås

Dim Test as ? 'Find en passende type
Test = PULSEApplication.Project.DisplayOrganiser.DisplayGroups("Function Group").Displays("Output Response(Laser) - Magnitude").Value '(Ved ikke om det er .value du skal bruge - det må du selv lige lure)
Range("A1").Select
Activecell.FormulaRC = Test 'Eller Activecell.value = Test
Avatar billede varst Praktikant
03. november 2003 - 20:57 #2
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester