2016-05-09 21 views
5

環境:Windows Server 2008(SP1)64ビット| Excel 2007.Excel範囲。範囲に実際にデータがある場合、0を返す値

私は範囲(60.664など)の値を持っています。私はすぐに、ウィンドウ内のコードの行を実行すると、私は結果a blank spaceとしてNullを得た:SelectActiveCell文を使用して

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

、以下のような、しかし、動作します。

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

私はSelect | ActiveCellと、この迅速かつ汚いを残すことができますが、私はベストプラクティスで行われ、これを残したいと思います。

誰もこれを遭遇したことがあり、ValueをRangeオブジェクトから正しく読み込む方法はありますか?私は私の研究で何も発見していない。

+1

ワークブック( "ddWorkbook.xlsm")を保存すると動作しますか?ワークシート( "毎日のダッシュボード")Rangeオブジェクト変数の範囲( "D23")?そうでない場合は、2番目の変種の「ActiveCell」と同じ操作を行います。両方の範囲変数が設定されているときは、 'Is'演算子を使って同一性をテストし、その違いを調べてみてください。 Range変数への保存が機能するなら、これは 'ActiveCell'を使いこなすための好ましい回避策であるはずです。 – Leviathan

+0

あなたはどこに行ったのですか?反対側をScott^2に逃した。 –

+1

@ScottCraner - 最近、私の弟、非常に忙しい。メモありがとう: –

答えて

5

セルD23は、この領域の最初のセルではなくマージされた領域にある可能性があります。これはSelectの後に値を取得する理由を説明します。

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

そして、それはケースだ場合、その後、あなたは範囲を修正したり、マージされた領域から値を取得しようとするか:あなたは範囲が選択されると住所を印刷して、それを確認することができ

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

ありがとう!私はそれが最初から合併した細胞であることを見ていたが、私は質問しなかっただろうが、これは私にさらに見えるように導く!列CとDはマージされていますが、Cは隠されています。私はそれが隠されていたので合併しないと思った! –

関連する問題