Excelでアクティブセルを移動する方法 – プログラミング – Home

Excelでアクティブセルを移動する方...
 
通知
すべてクリア

[解決済] Excelでアクティブセルを移動する方法


おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

Excelのアクティブセルの移動とデータの取得方法についてご教授ください。

=====現状のコード=====
_ApplicationPtr pXL;
RangePtr pRange = pXL->ActiveCell;
======================
上記でpRange->Value2によるアクティブセルの値の取得が可能です。
これを、次の行のセルの値の取得方法が分かりません。
お手数ですが、次の行のセルをアクティブにする方法をご教授ください。
(移動できればpRange->Value2で値の取得は可能と認識しております。)

(例)
A1セルをアクティブにした状態でA2セルへ移動し、A2セルをアクティブにする。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

アクティブにしなくてもシートオブジェクトからレンジオブジェクトを取得すればいいの
では?

_WorksheetPtr pSheet = pXL->ActiveSheet;
RangePtr pRange = pSheet->Range[A1]

参考
Visual C++ Excel操作編
http://www.ujasiri.com/prglib/vc/vc.html


返信引用
おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

ご回答ありがとうございました。

説明不足でしたが、実施したいこととしましては、セル固定でのデータ取得ではなく、任
意のデータを取得しようと思っています。

つまり、
①ある文字列で検索
②検索にヒットしたセル位置から、その列にある文字列を順に取得

例)AAAという文字列がA1セルでヒットした場合は、
 A2~A100セルの文字列を順に取得していく。

ということです。
提案いただいたコードではA1セル固定での指定となるため、そこが任意の場合にどうすれ
ばよいかご教授ください。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

シート内の検索
http://www.ujasiri.com/prglib/vc/excel/import/xls_imp_find_exp.html

見つかったRangeオブジェクトからOffsetメソッドで対応できるかな。

とりあえず、全く手掛かりがつかめないのであれば、
Excelのマクロの記録を使って、VBAのコードで大体どのような関数を使えばよいのか
つかめるので、そこからC++用に変換するほうがよいでしょう。
(マクロの記録
 ↓
VBAのコードを整形
 ↓
C++用に変換)


返信引用
おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

ありがとうございました。
マクロ実行したコードからC++に変更しようと思いましたが、
マクロではセルを移動してもVBコードしては出力されませんでした。
もう少し調査したいと思います。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

アクティブセルを移動したいのなら、Blueさんが書いている通りOffsetを使用すればよ
いでしょう。

RangePtr pRange = pXL->ActiveCell;
pRange->Offset[1][0]->Activate(); // 次行ならOffsetY[1]でもいいかも?

セルの値を取得したいのであれば、セルをアクティブにする必要はありません。
オフセットを指定してValue2で取得・設定(get/set)ができます。
VARIANT value = pRange->Offset[1][0]->Value2;

> 提案いただいたコードではA1セル固定での指定となるため、そこが任意の場合にどう
すれ
> ばよいかご教授ください。
質問内容が変わっているようですが、元々はアクティブセルの次をアクティブにする
ことが目的だったように思われます。Blueさんは
> RangePtr pRange = pXL->ActiveCell;
の代わりに
> RangePtr pRange = pSheet->Range[A1]
としたわけで、そこは質問の範囲ではないと判断したものと思われます。
「任意」のセルからの相対位置を指定したいならOffsetを使用すればよいので、
その「任意」の位置の指定方法は元の質問では
> 例)
> A1セルをアクティブにした状態でA2セルへ移動し、A2セルをアクティブにする。
となっていたわけで、任意のセルではなかったはず。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

あ、ぼけてる。
blueさんの回答は二つに分かれているのがごちゃごちゃになっちゃった。
前回の後半は無視してください。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました