Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10450 / 13644 ツリー ←次へ | 前へ→

【21722】セル位置の取得 かず 05/1/28(金) 8:44 質問[未読]
【21723】Re:セル位置の取得 IROC 05/1/28(金) 8:49 回答[未読]
【21725】Re:セル位置の取得 かず 05/1/28(金) 10:02 回答[未読]
【21728】Re:セル位置の取得 IROC 05/1/28(金) 10:43 回答[未読]
【21735】Re:セル位置の取得 かず 05/1/28(金) 13:13 回答[未読]
【21738】Re:セル位置の取得 IROC 05/1/28(金) 13:48 回答[未読]
【21756】Re:セル位置の取得 かず 05/1/28(金) 15:09 回答[未読]
【21766】Re:セル位置の取得 ichinose 05/1/28(金) 20:02 発言[未読]
【21798】Re:セル位置の取得 G-Luck 05/1/30(日) 22:08 回答[未読]

【21722】セル位置の取得
質問  かず E-MAIL  - 05/1/28(金) 8:44 -

引用なし
パスワード
   アクティブセルの取得はよく使いますが、そうではなく以下のような処理がしたいのですがいい方法はないでしょうか?

A1=入力セル
B10=teigi(A1*7)
C8=teigi(A1*2)

のような状況を仮定します。
A1に数値を入力すると、B10及びC8のユーザ定義関数が変化するのは言うまでもありませんが、そのときB10、C8の計算結果によって、それぞれのセルのプロパティを替えたいのです(表示桁数や、表示形式、色など)
関数teigiを呼び出したときに、そのセルの位置が取得したいのですが、そこをアクティブにするわけではないので、アクティブセルを取得するのではダメですよね。
なので、その位置を取得する方法がわかれば(もしくは、あるのなら)是非ご教授いただいたいと思っております。

文章下手なのでわからないところがあったら、追加質問お願い致します

【21723】Re:セル位置の取得
回答  IROC  - 05/1/28(金) 8:49 -

引用なし
パスワード
   Findメソッドで探してはどうですか?

【21725】Re:セル位置の取得
回答  かず E-MAIL  - 05/1/28(金) 10:02 -

引用なし
パスワード
   ▼IROC さん:
>Findメソッドで探してはどうですか?

えっと、説明がヘタでうまく伝わらないのかもしれませんが(すみません)

シート上のいろいろな部分で使うユーザ定義関数ですので、どこで使われるかわかりませんので、findで全セルを検索はちょっと避けたいです。
ちなみに、今はそれに類似した処理をしています。
シートも数十枚あるので、かなり処理に時間がかかってしまうんです。

1.teigi関数の呼び出し
2.teigi関数内計算
3.計算結果が小数なら、###.###に
  整数なら###,###に
  100以下なら###.#に
  セル属性を変える

のような処理がしたいのですが。
実際には、もっとケースが多いので、条件付き書式ではうまくいかないんです

【21728】Re:セル位置の取得
回答  IROC  - 05/1/28(金) 10:43 -

引用なし
パスワード
   セルを特定する必要があるのですから、Findが一番速くないですか?

【21735】Re:セル位置の取得
回答  かず E-MAIL  - 05/1/28(金) 13:13 -

引用なし
パスワード
   ▼IROC さん:
>セルを特定する必要があるのですから、Findが一番速くないですか?

えっと、findにやらせるとして、どういった動きでやればできるでしょう?私の知識の範囲では、findにやらせるのがピンとこないので。

【21738】Re:セル位置の取得
回答  IROC  - 05/1/28(金) 13:48 -

引用なし
パスワード
   検索をマクロの記録すれば分かると思いますが。

>今はそれに類似した処理をしています。
類似って?

【21756】Re:セル位置の取得
回答  かず E-MAIL  - 05/1/28(金) 15:09 -

引用なし
パスワード
   >>今はそれに類似した処理をしています。
>類似って?

ユーザー定義関数が使われるセルは特定していませんが、使う範囲は決まっているので(A〜F列までのどこか、などという風に)、その範囲に名前を付けて、teigi関数が呼ばれるたぶに、その中をfindで調べて該当するセルを見つけるたびに処理させています。

ただ、今はteigi関数で得られる値は、他と区別できるような値なのですが(teigi関数の返値だけ10000を超える)、今後は不確定の値が返ってくるような使い方をするので、どうやって特定したらよいものやら・・・・

【21766】Re:セル位置の取得
発言  ichinose  - 05/1/28(金) 20:02 -

引用なし
パスワード
   ▼かず さん:
こんばんは。

>>>今はそれに類似した処理をしています。
>>類似って?
>
>ユーザー定義関数が使われるセルは特定していませんが、使う範囲は決まっているので(A〜F列までのどこか、などという風に)、その範囲に名前を付けて、teigi関数が呼ばれるたぶに、その中をfindで調べて該当するセルを見つけるたびに処理させています。
>
>ただ、今はteigi関数で得られる値は、他と区別できるような値なのですが(teigi関数の返値だけ10000を超える)、今後は不確定の値が返ってくるような使い方をするので、どうやって特定したらよいものやら・・・・

Application.callerというプロパティで取得できますよ!!

'============================================
Function test()
  test = Application.Caller.Address
End Function

と言う意味ですよね?

但し、ユーザー定義関数で
セルの書式(NumberFormatLocalプロパティ等)を変更する事はできませんが・・・。

【21798】Re:セル位置の取得
回答  G-Luck  - 05/1/30(日) 22:08 -

引用なし
パスワード
   セルの特定ということなら、ユーザー定義関数の引数に自分のセルを指定するようにしてはどうですか?

A1=入力セル
B10=teigi(A1*7,B10)
C8=teigi(A1*2,C8)

みたいに。

10450 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free