2016-05-09 36 views
5

Środowisko: Windows Server 2008 (SP1) 64-bitowy | Excel 2007.Excel Range.Value zwraca 0, gdy zakres ma dane

Mam wartość w zakresie (np. 60,664). Kiedy uruchomić wiersz kodu w najbliższym oknie mam Null wskutek a blank space:

?Workbooks("ddWorkbook.xlsm").Worksheets("Daily Dashboard").Range("D23").Value 

Używanie Select i ActiveCell oświadczenie, jak poniżej, działa jednak.

Workbooks("ddWorkbook.xlsm").Worksheets("Daily Dashboard").Range("D23").Select 
ActiveCell.Value 

mogę zostawić to szybki i brudny z Select | ActiveCell, ale chciałbym zostawić to zrobione z najlepszych praktyk.

Czy ktoś kiedykolwiek natknął się na to i jak uzyskać Value, aby przeczytać bezpośrednio z obiektu Range? Nic nie znalazłem w moich badaniach.

+1

Czy to działa, jeśli zapisujesz 'Skoroszyty (" ddWorkbook.xlsm ") Arkusze robocze (" Daily Dashboard ") Zakres (" D23 ")' w zmiennej obiektu Range najpierw? Jeśli nie, zrób to samo z drugim wariantem "ActiveCell". Po ustawieniu obu zmiennych zakresu spróbuj przetestować tożsamość za pomocą operatora 'Is' i sprawdź, jakie są różnice. Jeśli zapisywanie do zmiennej Range działa, powinno to być preferowanym sposobem obejścia problemu z "ActiveCell". – Leviathan

+0

gdzie byłeś mężczyzną? Przegapiłam drugą stronę do Scotta^2. –

+1

@ScottCraner - bardzo zajęty w tych dniach, mój bracie. Dzięki za notatkę :) –

Odpowiedz

5

Może to oznaczać, że komórka D23 znajduje się w obszarze scalonym, ale nie jest pierwszą komórką tego obszaru. To wyjaśnia, dlaczego otrzymujesz wartość po Select. Można to sprawdzić przez wydrukowanie adresu po wybraniu zakres:

Workbooks("ddWorkbook.xlsm").Worksheets("Daily Dashboard").Range("D23").Select 
Debug.Print ActiveCell.Address 

A jeśli jest to przypadek, to można albo ustalić zakres lub próbować uzyskać wartość z obszaru scalonego:

Workbooks("ddWorkbook.xlsm").Worksheets("Daily Dashboard").Range("D23").MergeArea.Cells(1,1).Value 
+0

Dziękujemy! Gdybym zobaczył, że jest to komórka zlepiona od początku, nie zadałbym tego pytania, ale to doprowadziło mnie do dalszego spojrzenia! Okazało się, że kolumny C i D są połączone, ale C jest ukryty. Zakładałem, że ponieważ został ukryty, nie zostanie scalony! –