2016-05-09 27 views
5

Ambiente: Windows Server 2008 (SP1) a 64 bit | Excel 2007.Intervallo di Excel.Valore che restituisce 0 quando l'intervallo ha effettivamente dati

Ho un valore in un intervallo (ad esempio 60.664). Quando eseguo la riga di codice nella finestra immediata ho ottenuto un Null come risultato a blank space:

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

Utilizzando una dichiarazione Select e ActiveCell, come qui di seguito, funziona comunque.

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

posso lasciare questo rapido e sporco con la Select | ActiveCell, ma vorrei lasciare questo fatto con le migliori pratiche.

Qualcuno ha mai incontrato questo e come ottenere il Value da leggere a destra dall'oggetto intervallo? Non ho trovato nulla nella mia ricerca.

+1

Funziona se si salva 'Cartelle di lavoro (" ddWorkbook.xlsm "). Fogli di lavoro (" Daily Dashboard "). Intervallo (" D23 ")' in una variabile oggetto Range prima? In caso contrario, fare lo stesso con la seconda variante 'ActiveCell'. Quando hai impostato entrambe le variabili di intervallo, prova a verificare l'identità con l'operatore 'Is' e scopri quali sono le differenze. Se il salvataggio su una variabile Range funziona, questa dovrebbe essere la soluzione alternativa per scherzare con 'ActiveCell'. – Leviathan

+0

dove sei stato uomo? Manca l'altro lato a Scott^2. –

+1

@ScottCraner - molto impegnato in questi giorni, fratello mio. Grazie per la nota :) –

risposta

5

Potrebbe essere che la cella D23 si trovi in ​​un'area unita ma non la prima cella di quest'area. Questo spiegherebbe perché stai ottenendo il valore dopo un Select. Puoi controllare stampando l'indirizzo dopo aver selezionato la gamma:

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

E se è il caso, allora è possibile correggere l'intervallo o cercare di ottenere il valore dalla zona di fusione:

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

Grazie! Se avessi visto che era una cellula unita fin dall'inizio, non avrei fatto la domanda, ma questo mi ha spinto a guardare oltre! Risulta che le colonne C e D sono unite, ma C è nascosto. Ho pensato che poiché era nascosto non sarebbe stato unito! –