none
VisualStudio2017 VSTOエクセルアドイン セル位置の取得 RRS feed

  • 質問

  •         private void btn_位置取込み_Click(object sender, EventArgs e)
            {
                var activeSheet = ExcelAddIn_測定.Globals.ThisAddIn.Application.ActiveSheet
                        as Microsoft.Office.Interop.Excel.Worksheet;
                var activeRange = ExcelAddIn_測定.Globals.ThisAddIn.Application.ActiveSheet
                    as Microsoft.Office.Interop.Excel.Range;
              

         int col = activeRange.Column;

                int row = activeRange.Row;
            }

    このようコードですがエラーが発生してセル位置が読み込めません

    アドバイスお願い致します。

    2018年3月7日 10:20

すべての返信

  •             var activeSheet = ExcelAddIn_測定.Globals.ThisAddIn.Application.ActiveSheet
                        as Microsoft.Office.Interop.Excel.Worksheet;
                var activeRange = ExcelAddIn_測定.Globals.ThisAddIn.Application.ActiveSheet
                    as Microsoft.Office.Interop.Excel.Range;

    activeRange を取るべきところが、ActiveSheet を取っているように見えます。
    activeRange の行の書き写し間違いではないか、確認してもらえますか?
    2018年3月7日 12:33
    モデレータ
  • ありがとうございます。

                //var activeSheet = ExcelAddIn_測定.Globals.ThisAddIn.Application.ActiveSheet
                //        as Microsoft.Office.Interop.Excel.Worksheet;
                var activeRange = ExcelAddIn_測定.Globals.ThisAddIn.Application.ActiveSheet
                    as Microsoft.Office.Interop.Excel.Range;

    ここは上記でも同じでした。

    2018年3月8日 10:34
  • ActiveSheet プロパティは「ワークシート」(Worksheet)を取得するプロパティであり、「選択範囲」(Range)を取得するものではありません。
    https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/application-activesheet-property-excel

    そのため、参考にされている書籍、あるいは Web ページと見比べ直してくださいということが言いたかったのです。
    (ワークシートを問わず、選択範囲を取得するなら Application.Selection でも良さそうですが、未検証)

    2018年3月8日 12:33
    モデレータ
  • ありがとうございます。

    見直してみます。

    2018年3月10日 3:44