Excel VBA質問箱 IV

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

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


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

【29373】自動の演算について MokoMoko 05/10/3(月) 22:06 質問[未読]
【29375】Re:自動の演算について ponpon 05/10/3(月) 22:54 発言[未読]
【29386】Re:自動の演算について Jaka 05/10/4(火) 9:55 発言[未読]
【29388】Re:自動の演算について Jaka 05/10/4(火) 10:24 発言[未読]
【29431】Re:自動の演算について ponpon 05/10/4(火) 19:27 発言[未読]
【29432】Re:自動の演算について MokoMoko 05/10/4(火) 20:12 お礼[未読]

【29373】自動の演算について
質問  MokoMoko  - 05/10/3(月) 22:06 -

引用なし
パスワード
   自動演算で、D2のセルに「=B2*C2」と計算式を入れていますが。
B2のセルの数字変更には自動演算をしますが、C2のセルの数字を変更
しても自動演算をしません。このコードのどの部分が問題なのでしょうか。
ご指摘の程お願いします。

Private Sub Worksheet_Change(ByVal Target As Range)
  
  If Target.Address(0, 0) = "B2" Then
    Application.Calculation = xlCalculationAutomatic
  End If   

  If Target.Address(0, 0) = "C2" Then
    Application.Calculation = xlCalculationAutomatic
  End If   


End Sub

【29375】Re:自動の演算について
発言  ponpon  - 05/10/3(月) 22:54 -

引用なし
パスワード
   こんばんは。
よく意味が分からないのですが、
普通に D2のセルに「=B2*C2」としていれば、
ツール→オプション→計算→自動 としていれば、
特にマクロを記述しなくても、自動計算すると思うのですが・・・
計算を手動としていて、値入力の時だけ自動としたいのなら、

>  If Target.Address(0, 0) = "B2" Then
>    Application.Calculation = xlCalculationAutomatic
>  End If

これで、一度 自動にしてしまうと後はずっと自動だと思うのですが・・・

手動→入力後→計算→手動とするなら、手動に戻さなければならないと思います。

こんな感じではどうでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
   If .Count > 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   If Not IsNumeric(.Value) Then Exit Sub
   If Not Application.Intersect(Target, Range("B2:C2")) Is Nothing Then
    Application.Calculation = xlCalculationAutomatic
    Application.Calculation = xlCalculationManual
   End If
  End With

End Sub

【29386】Re:自動の演算について
発言  Jaka  - 05/10/4(火) 9:55 -

引用なし
パスワード
   >自動演算
Calculate メソッド をヘルプで見てみるといいかも...。

【29388】Re:自動の演算について
発言  Jaka  - 05/10/4(火) 10:24 -

引用なし
パスワード
   このコードを試してみると、手動計算にしても関数を入れた時点で計算されていますね?
思っていたのと結果が違って???って感じでした。
by Win2000SP3 & EXL97SR-2

Sub abc()
Range("c1:c10").Formula = "=b1+1"
Application.Calculation = xlCalculationManual
a = 10
Range("A1:A10").Formula = "=1+1"
Range("b1:b10").Formula = "=a1+1"
Sheets(1).Range("c1:c5").Calculate
'Application.Calculation = xlAutomatic
End sub

【29431】Re:自動の演算について
発言  ponpon  - 05/10/4(火) 19:27 -

引用なし
パスワード
   Jakaさん こんにちは。

あれれ。ホントだ。\(◎o◎)/!
C1からC5までは計算
C6からC10までは未計算
'Application.Calculation = xlAutomatic
のコメントをはずせば、計算されますが・・・


Calculate メソッド

計算を実行します。計算の対象となるのは、開かれているすべてのブック、ブック内の特定のワークシート、ワークシート内の指定されたセル範囲のいずれかです。

指定されたセル範囲 Worksheets(1).Rows(2).Calculate

【29432】Re:自動の演算について
お礼  MokoMoko  - 05/10/4(火) 20:12 -

引用なし
パスワード
   ▼ponpon さん Jakaさん:

ありがとうございました。
使えそうで、使いづらい感じのマクロ って、言ったら良いのでしょうか。
でも、楽しい計算ありがとうございました。

  Application.Calculation = xlCalculationAutomatic
  Application.Calculation = xlCalculationManual 
の本来の意味が少し分かりました。

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