喫茶XRAYトップページ


[11758] Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 00:23:13 ☆康☆ヾ
Mr. XRay さん

困ったときのXRayさん頼みです。以下のことについて、ぜひ宜しくお願いします。

ここのサイトのおかげで、最近、EXCELのファイルを読み書きできるようになり、
とても助かっております。
本当にありがとうございます。

今回も、EXCELファイルにワンクリックで数個の既定の文字列を代入すると
いう必要性にかられ、Delphiでプログラムを作りました。

基本的なものはできたのですが、今日、同僚に試験運用をさせたところ、
人間のわがままに対応できないことに気がつきました。

Delphiで、Excelのセルを指定して、そこに文字列を記入後、下に入力セル
を下げていくようにしているのですが、あっ、入力ミスした、あるいは、
やはりここのセルはこちらの文字列の方がいいなと思って、Excelのセルを
クリックしても、Delphiはそんなことは感知しないので、入力は前回の続きに
忠実に入力していくことになります。

で、Excel側でアクティブセルを変えたとき、それをDelphi側で検知して
入力セルを変えるようにしようと思い、文字列入力直前にアクティブセルの
検出をしようと思い、

ACol := WorkSheet.ActiveCell.Colmun
ARow := WorkSheet.Selection.Row

などの命令を確かめてみましたが、残念ながら、
「メソッド'Selection'はオートメーションオブジェクトでサポートされていません。」
というつれないエラーメッセージが表示され、動作しません。

Excelのアクティブセルの列・行の位置取得を教えていただけると、大変助かります。

ぜひ、よろしくお願いします。

[11759] Re:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 00:53:23 taka
▼ ☆康☆ヾさん
> などの命令を確かめてみましたが、残念ながら、
> 「メソッド'Selection'はオートメーションオブジェクトでサポートされていません。」
> というつれないエラーメッセージが表示され、動作しません。
>
> Excelのアクティブセルの列・行の位置取得を教えていただけると、大変助かります。

ヒント: マクロ記録ON


[11760] Re2:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 06:20:28 Mr.XRAY
> ヒント: マクロ記録ON

ハハハッ.
私も同じですね.VBA のヘルプみたり.
TExcelApplication であれば入力支援機能である程度予測したり.


[11764] Re2:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 21:14:02 ☆康☆ヾ
▼ takaさん

レスありがとうございます。

これについては、マクロ記録をonにしたり、関連サイトを
片端から検索して調べたのですが、どうしてもうまくいかず
質問にいたりました。

結果は、MR.Rayさんのコメントにレスします。

[11761] Re:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 09:39:18 Mr.XRAY
> ACol := WorkSheet.ActiveCell.Colmun
> ARow := WorkSheet.Selection.Row
>
> などの命令を確かめてみましたが、残念ながら、
> 「メソッド'Selection'はオートメーションオブジェクトでサポートされていません。」
> というつれないエラーメッセージが表示され、動作しません。


ちなみに VBA のヘルプで ActiveCell を調べてみると以下のようになっています.
何か気が付きません ?


[11762] Re2:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 18:07:33 SO

[11763] Re3:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 18:33:53 Mr.XRAY
▼ SOさん
> すごいヒント。

というよりそのままですね.ということで解決ですね (^^;

>ActiveCellはRange オブジェクトを返します。

そうなんですよね.
今は昔と違って MSDN でも VBA 関係の記事があるんですよね.
便利になったものです.大いに活用したいところです.

※ エクセルを操作する時は Range オブジェクトという概念の理解が必須かと


[11766] Re3:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 21:19:22 ☆康☆ヾ
▼ SOさん
> すごいヒント。
>
>
> ActiveCellはRange オブジェクトを返します。
> https://msdn.microsoft.com/ja-jp/VBA/Excel-VBA/articles/application-activecell-property-excel
> https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/window-activecell-property-excel
>
> Range オブジェクト
> https://msdn.microsoft.com/ja-jp/VBA/Excel-VBA/articles/range-object-excel


レスありがとうございます。

なるほど、このあたりのことも勉強しないとダメですね。

有用な情報、ありがとうございました。

[11765] Re2:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 21:17:56 ☆康☆ヾ
▼ Mr.XRAYさん
> > ACol := WorkSheet.ActiveCell.Colmun
> > ARow := WorkSheet.Selection.Row
> >
> > などの命令を確かめてみましたが、残念ながら、
> > 「メソッド'Selection'はオートメーションオブジェクトでサポートされていません。」
> > というつれないエラーメッセージが表示され、動作しません。
>
> ちなみに VBA のヘルプで ActiveCell を調べてみると以下のようになっています.
> 何か気が付きません ?


早速のレス、ありがとうございます。

最初、意味がよくわからなかったのですが、分かりました。
Delphi Excelで検索をしていてヒットしなかったのですが、
VBA Excel で検索をして、意味もわかりました。

ACol := ExcelApp.ActiveCell.Column;
ARow := ExcelApp.ActiveCell.Row;

で取得できました。

てっきり、アクティブセルなので、ワークシートに対する命令だと思い込んで
いました。
Excelアプリに対する命令なんですね。

無事に解決した報告と、お礼を申し上げます。
ありがとうございました。

[11767] Re:Excelのアクティブセルの位置の取得返信 削除
2018/3/13 (火) 23:51:18 Mr.XRAY
てなわけでサンプル追加しておきました.

[ アクティブセルの取得と選択列数と行数の取得]
http://mrxray.on.coocan.jp/Delphi/plExcelEx/E154_ActiveCell_SelectRange.htm


[11771] Re2:Excelのアクティブセルの位置の取得返信 削除
2018/3/14 (水) 10:38:30 SO
▼ Mr.XRAYさん
> てなわけでサンプル追加しておきました.
>
> [ アクティブセルの取得と選択列数と行数の取得]
> http://mrxray.on.coocan.jp/Delphi/plExcelEx/E154_ActiveCell_SelectRange.htm


選択範囲というか、表内にアクティブセルがあって、
「Ctrl + A」すると表全体が選択されるやつにRange.CurrentRegion プロパティがありますね。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-currentregion-property-excel

このプロパティはRange オブジェクトを返すので、
表の最下部に合計等を別途追加したいときによく使ってます。


[11772] Re3:Excelのアクティブセルの位置の取得返信 削除
2018/3/14 (水) 13:14:41 Mr.XRAY
> 選択範囲というか、表内にアクティブセルがあって、
> 「Ctrl + A」すると表全体が選択されるやつにRange.CurrentRegion プロパティがありますね。


おおっ,こんなのがあるんですか.
サンプルに追加しておこうかな...


[11773] Re4:Excelのアクティブセルの位置の取得返信 削除
2018/3/14 (水) 22:30:06 Mr.XRAY
> おおっ,こんなのがあるんですか.
> サンプルに追加しておこうかな...


てなわけで (どういうわけかは訊かないでください ) サンプル追加してみました.
折角の知識ですので.

[アクティブセルと連続したデータがあるセル範囲の取得]
http://mrxray.on.coocan.jp/Delphi/plExcelEx/E154_ActiveCell_SelectRange.htm#03


[11776] Re5:Excelのアクティブセルの位置の取得返信 削除
2018/3/15 (木) 10:41:46 SO
▼ Mr.XRAYさん

私、下のように書いてますけど、
どちらかというと、罫線を設定するときによく使います。
あと、表内の最大行数や最大列数とかの取得とか。

>表の最下部に合計等を別途追加したいときによく使ってます。/plExcelEx/E154_ActiveCell_SelectRange.htm#03

[11777] Re6:Excelのアクティブセルの位置の取得返信 削除
2018/3/15 (木) 11:27:33 Mr.XRAY
> 私、下のように書いてますけど、

> どちらかというと、罫線を設定するときによく使います。
> あと、表内の最大行数や最大列数とかの取得とか。


データの領域が分かるんですから,
そのぐらいの用途は考えられるとは思うのですが,
やっぱり書いた方がいいかな...


[11778] Re7:Excelのアクティブセルの位置の取得返信 削除
2018/3/16 (金) 08:21:38 SO
▼ Mr.XRAYさん

> データの領域が分かるんですから,
> そのぐらいの用途は考えられるとは思うのですが,


そうですね。私もそう思います。

> やっぱり書いた方がいいかな...

自分の文にセルフツッコミしただけなので、お気になさらず。

[11779] Re7:Excelのアクティブセルの位置の取得返信 削除
2018/3/16 (金) 12:53:59 Mr.XRAY
> データの領域が分かるんですから,
> そのぐらいの用途は考えられるとは思うのですが,


と言いつつ,実は追加していたりして...  ハハハッ.

http://mrxray.on.coocan.jp/Delphi/plExcelEx/E154_ActiveCell_SelectRange.htm#fig6


[11781] Re8:Excelのアクティブセルの位置の取得返信 削除
2018/3/16 (金) 16:25:00 Mr.XRAY
> と言いつつ,実は追加していたりして...  ハハハッ.

しつこく更に追加しました (笑)

[連続してデータがあるセル範囲と Name プロパティの利用]
http://mrxray.on.coocan.jp/Delphi/plExcelEx/E156_CurrentRegion.htm#02


INCM/CMT
Cyclamen v3.82