2012-01-31 9 views
8

Wyszukuję dane z programu Excel i chcę zachować moje tablice 0, ale program Excel zwraca 1 bazę. Czy istnieje dość prosty sposób zwracania zmiany tablicy od 1 do 0 bazy? Czy po prostu muszę utworzyć pętlę?Zmienianie macierzy bazowej 1 na bazę 0 Array

Oto przykładowy kod tutaj:

dim oData(,) as object 
dim rng as range 
dim wks as worksheet = xlApp.Activeworkbook.sheets(Sheet1) 

rng=wks.Range("A1:B2") 

oData=rng.Value2 
+0

Tak - pętla. Nie jestem pewien, czy to dobra praktyka - każdy znany z działania VBA wie, że tablica wariantów z Range(). Wartość jest oparta na 1: jeśli zmienisz ją na 0, może to spowodować więcej problemów niż rozwiązuje , szczególnie jeśli Soemone skończy z utrzymaniem twojego kodu. –

+0

Tak, nie byłem pewien, jak to się stało w VB.NET, używam biblioteki, którą zrobiłem z pliku wykonawczego programu Excel 2003 i pomyślałem, że może być inaczej z tego powodu. Wiem, że Excel-DNA zwraca tablicę opartą na zero, więc domyślam się, że to dlatego założyłem, że jest standardem, aby być opartym na 0 w .NET. Sądzę, że będę trzymać się z tablicą opartą na 1. Jeśli umieścisz swój komentarz jako odpowiedź, oznaczy go jako prawidłowy, chyba że ktoś inny przejdzie z lepszą odpowiedzią między teraz. – Jon49

+0

@TimWilliams, Właśnie zauważyłem, że mówisz o VBA. Sądzę więc, że nie odpowiedziałeś na moje pytanie dotyczące .NET. Cóż, może ktoś inny da mu szansę! – Jon49

Odpowiedz

7

Pętla jest najprostszym rozwiązaniem.

Dim target as string(0 to oData.Length - 1) 

For index = 1 to oData.Length 
    target(index - 1) = oData(index) 
Next 

To z pamięci i nie testowane, ale to wystarczająco oczywiste.

Powiązane problemy