Excel VBA質問箱 IV

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

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


215 / 13645 ツリー ←次へ | 前へ→

【81484】引数で指定したセルだけをCalculateメソッドで再計算したい FTB 20/9/24(木) 18:11 質問[未読]
【81485】Re:引数で指定したセルだけをCalculateメソ... γ 20/9/24(木) 18:58 発言[未読]
【81486】Re:引数で指定したセルだけをCalculateメソ... FTB 20/9/24(木) 21:58 発言[未読]
【81487】Re:引数で指定したセルだけをCalculateメソ... γ 20/9/24(木) 23:05 回答[未読]
【81488】Re:引数で指定したセルだけをCalculateメソ... γ 20/9/24(木) 23:35 回答[未読]
【81489】Re:引数で指定したセルだけをCalculateメソ... FTB 20/9/25(金) 8:48 お礼[未読]
【81490】Re:引数で指定したセルだけをCalculateメソ... γ 20/9/25(金) 11:46 発言[未読]
【81491】Re:引数で指定したセルだけをCalculateメソ... FTB 20/9/25(金) 19:46 お礼[未読]

【81484】引数で指定したセルだけをCalculateメソ...
質問  FTB E-MAIL  - 20/9/24(木) 18:11 -

引用なし
パスワード
   【Excel再計算】引数で指定したセルだけをCalculateメソッドで再計算したいのですが、エラーが出ます。ご教授願います。

Function func2(arg As Range)
Dim c As Range, ans As Range

For Each c In arg
ans = ans & c.Text
Next c

func2 = Range(ans)

'「ans」セルだけ再計算を実行したい
Range(ans).Calculate

End Function

【81485】Re:引数で指定したセルだけをCalculateメ...
発言  γ  - 20/9/24(木) 18:58 -

引用なし
パスワード
   Function func2(arg As Range)
  arg.Calculate
End Eunction
だけでよいのでは?
ただ、これだけなので、Functionプロシージャにする意味もなさそうですが。

なお、
ansがRange変数になっていますが、どこのセルか指定がないし、
For Each c In arg
  ans = ans & c.Text
Next c
は、ansは String型に変更すれば、
各セルに表示されているものを文字列として連結している
ということは理解されていますか?
いずれにしても、いろいろを再考すべきところが多いですね。
頑張って下さい。

【81486】Re:引数で指定したセルだけをCalculateメ...
発言  FTB E-MAIL  - 20/9/24(木) 21:58 -

引用なし
パスワード
   御回答、ありがとうございます。

▼γ さん:

>ただ、これだけなので、Functionプロシージャにする意味もなさそうですが。

→ 1枚のシートの中に、同時に計算できない排他的な行が多数あるためFunctionにしたいと考えています。(チェックBoxで再計算したい行を指定)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
>ansがRange変数になっていますが、どこのセルか指定がないし、

→ Func2の引数にセル(B1等)を入力しています。
  呼び方は「=func2(b1)」や「=func2("b1")」など、各種パターンを試してみましたが、症状は変わらずでした。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
>For Each c In arg
>  ans = ans & c.Text
>Next c
>は、ansは String型に変更すれば、
>各セルに表示されているものを文字列として連結している
>ということは理解されていますか?

→ これは、指定したセル(B1)を"B"+"1"とマージしていると理解していますが。

【81487】Re:引数で指定したセルだけをCalculateメ...
回答  γ  - 20/9/24(木) 23:05 -

引用なし
パスワード
   >▼γ さん:
>
>>ただ、これだけなので、Functionプロシージャにする意味もなさそうですが。
>
> → 1枚のシートの中に、同時に計算できない排他的な行が多数あるためFunctionにしたいと考えています。(チェックBoxで再計算したい行を指定)
>
 これはあとまわしにしましょう。 

>−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
>>ansがRange変数になっていますが、どこのセルか指定がないし、
>
> → Func2の引数にセル(B1等)を入力しています。
>  呼び方は「=func2(b1)」や「=func2("b1")」など、各種パターンを試してみましたが、症状は変わらずでした。

>=func2(b1)」や「=func2("b1")」など 
それは arg変数のことですよね。
私が言っているのは、あなたが宣言した ans 変数です。
Dim ans As Range
として、その後、どこのセルと指定することなく、直接、
 ans = ans & c.Text
などとしていますが、そういうことはできません。


>−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
>>For Each c In arg
>>  ans = ans & c.Text
>>Next c
>>は、ansは String型に変更すれば、
>>各セルに表示されているものを文字列として連結している
>>ということは理解されていますか?
>
> → これは、指定したセル(B1)を"B"+"1"とマージしていると理解していますが。

どうしたら、そういう理解になるのか説明していただけますか?

For Each c In arg
というのは、argというセル範囲の、各セル c について、以下を繰り返す、
という意味でしょう?

やりたいことは、指定したセル範囲arg を再計算するんだから、
端的に arg.Calculate
とすればよいだけじゃないんですか?

【81488】Re:引数で指定したセルだけをCalculateメ...
回答  γ  - 20/9/24(木) 23:35 -

引用なし
パスワード
   大事なことを言い忘れましたが、
>=func2(b1)」や「=func2("b1")」など
ユーザー定義関数の中ではCalculateメソッドは使えません。

「Excel のユーザー定義関数の制限について」
ht  tps://support.microsoft.com/ja-jp/help/170787/description-of-limitations-of-custom-functions-in-excel
にあるように、ほとんどのメソッドは使用できません。
(他のセルに影響を及ぼす副作用を避けるためです。)

【81489】Re:引数で指定したセルだけをCalculateメ...
お礼  FTB  - 20/9/25(金) 8:48 -

引用なし
パスワード
   色々とご指摘ありがとうございます!!
マクロでチャレンジしてみようと思います。

▼γ さん:
>大事なことを言い忘れましたが、
>>=func2(b1)」や「=func2("b1")」など
>ユーザー定義関数の中ではCalculateメソッドは使えません。
>
>「Excel のユーザー定義関数の制限について」
>ht  tps://support.microsoft.com/ja-jp/help/170787/description-of-limitations-of-custom-functions-in-excel
>にあるように、ほとんどのメソッドは使用できません。
>(他のセルに影響を及ぼす副作用を避けるためです。)

【81490】Re:引数で指定したセルだけをCalculateメ...
発言  γ  - 20/9/25(金) 11:46 -

引用なし
パスワード
   チャレンジされるのは結構ですが、
指摘済みのことを活かしてください。
Rangeに対してCalculateメソッドを使うだけの話です。

なお、戻り値もないはずなのに
func2 = Range(ans)
としてみたり、Functionプロシージャに限らずマクロの基本から
おさらいされることをお薦めします。

【81491】Re:引数で指定したセルだけをCalculateメ...
お礼  FTB  - 20/9/25(金) 19:46 -

引用なし
パスワード
   色々と細かなご配慮の数々、ご親切痛み入ります。

▼γ さん:
>チャレンジされるのは結構ですが、
>指摘済みのことを活かしてください。
>Rangeに対してCalculateメソッドを使うだけの話です。

→ 今回のご指摘で理解が進みました。
>
>なお、戻り値もないはずなのに
>func2 = Range(ans)
>としてみたり、Functionプロシージャに限らずマクロの基本から
>おさらいされることをお薦めします。

→ 戻り値は、デバッグ表示のためにでした。
  ご指摘通り、マクロの勉強を進めたいと存じます。

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