GRY-Online.pl --> Archiwum Forum

VBA w Excelu

25.09.2010
23:56
[1]

McDevlin [ Centurion ]

VBA w Excelu

Potrzebuję napisać kilka procedur dodatku do excela (*.xla).
Większość tych procedur potrzebuje jako dane wejściowe i wyjściowe tablicy bajtów 256 elementów. Jedyna możliwość jaką widzę by takie dane podawać to string. Problem w tym, że za każdym razem jak w tym stringu znajdzie się znak o kodzie 0 to resztę stringa uwala. Niestety potrzebuję zer w tych tablicach i nie może mi tak danych od 0 do końca wyrąbywać.

Jak to rozwiązać?
Jak znaki w stringu mieszczą się w zakresie ASCII obsługiwanych przez windę - to wszystko jest okej... jak za kod znaku damy 0 to reszta stringa leci.

Potrzebne mi to do zaprezentowania działania mikrokontrolera - procedura inicjalizująca - dająca stan początkowy, i kilka procedur pokazujących jak wpływają na ten stan rozkazy.

Jakieś rady?
Bo już zaczynam wysiadać.






Kod procedury:


Function proc51init()
Dim i As Integer
Dim stan(255) as byte
'wyzerowanie pamięci od 0 bajtu do 127
For i = 0 To 127
stan(i) = 0
Next i

'stan początkowy P0 to FF
stan(128) = 255
'P1
stan(144) = 255
'P2
stan(160) = 255
'P3
stan(176) = 255
'ACC
stan(224) = 0
'B
stan(240) = 0
'SP - stan początkowy wskaźnika stosu to 7 - wskazuje bezpośrednio na zapisywanie danych przy uzyciu stosu od 8 bajtu - żeby korzystać z innych banków rejestrów i pamięci flag i równocześnie ze stosu - należy na początku programu zmienić tę wartość na ostatni bajt albo ostatniego banku rejestrów albo na ostatni bajt pamięci bitowej
stan(129) = 7
'DPL
stan(130) = 0
'DPH
stan(131) = 0
'PCON = 0xxxxxxxb
stan(135) = stan(135) And 127
proc51init = StrConv(stan, vbUnicode)
End Function



Efektem jest niestety string o długości 0 w excelu - mimo, że aż do wyjścia z procedury w VBA wygląda poprawnie.

© 2000-2024 GRY-OnLine S.A.