[[20181214185655]] 『Private Sub 複数』(落ち葉マーク) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Private Sub 複数』(落ち葉マーク)

皆様に教えていただきたい事がございます。
ぜひお力をお貸し願えますでしょうか。
VBAと言うのでしょうか、ある英文がございます。
それが
Private Sub Worksheet_Calculate()

  If Range("O1").Value < 0 Then
    MsgBox "マイナスです"
  End If
End Sub

Private Sub Worksheet_Calculate()

  If Range("P1").Value < 0 Then
    MsgBox "プラスです"
  End If
End Sub
なのですがうまく作動してくれません。
解決策などありますでしょうか?
エクセルはもとよりパソコン自体も得意ではないため
文面の意味もよくわかってません。
ただ該当のセル番地がマイナスならマイナスと
言ってくれるみたいなのですが、
私にはどうにも手を加えることが出来ません。
厚かましいお願いですが、どなたか修正していただけませんでしょうか?
何卒よろしくお願いしたいます。

< 使用 Excel:Excel2007、使用 OS:Windows10 >


 >  If Range("P1").Value < 0 Then
 >    MsgBox "プラスです"

 それ本当に正しい英文ですか?

 普通、そういうケースでは、P1の値はマイナスなんですけど・・

(半平太) 2018/12/14(金) 19:31


プログラムのロジックがどうかは置いておいて、

Calculateイベントは、ろくに動かないから、ほとんど使ったことがない。
場所も特定できないし。
因みに、2007だとF9を押しても反応しない。
どこかに
=1+1
と入れてやればその時だけ反応するけど。
=1+1を入れたセルを編集状態にしてEntすれば、また反応はします。
なんか、再計算だと反応しない感じ??
(BJ) 2018/12/14(金) 19:40


 P1セルの方は、プラスかどうかのチェックでいいなら・・

 Private Sub Worksheet_Calculate()
     Dim Result

     Result = [REPT("O1はマイナス ",O1<0)&REPT("P1はプラス",P1>0)]
     If Result <> "" Then
         MsgBox Result
     End If
 End Sub

(半平太) 2018/12/14(金) 19:48


BJさんへ
>Calculateイベントは、ろくに動かないから、ほとんど使ったことがない。

Calculateイベントが使いづらいのは同感ですが、ろくに動かないと感じるのは再計算の考え方が違うからです。

そもそもF9「再計算」コマンドは(手動計算で一つでも計算元の値が変わっているなどして)実際に再計算が必要ないセルは再計算しません。
つまり「再計算」コマンドを実行しても、実際には再計算が必要なセルが一つもないならばExcelは再計算しませんからイベントも発生しません。

例外として揮発性関数がシート上に存在すると無条件で発生するようになります。
RANDとかNOWとか

再計算が必要なくても強制的に再計算を行いたい時は、Application.CalculateFullRebuildメソッドあるいはCtrl+Shift+F9を押す必要があります。

(名無し) 2018/12/14(金) 20:44


 > VBAと言うのでしょうか、ある英文がございます。
 英文ですか。コードとかプログラムとかいいますね。

 最近、複数のイベントプロシージャを巡る質問が多いですが、不思議です。

 さて、
 (1)
 >なのですがうまく作動してくれません。
 エラーが出るならエラーメッセージを正確に示してください。

 (2)まず、そのコードをどこに書いていますか?
   動かしたいシートに対応したシートモジュールに書いていますか?

 (3)ひとつのシートモジュールの中に複数の同名のプロシージャを書くことはできません。
 ひとつにまとめます。
 Private Sub Worksheet_Calculate() 
   If Range("O1").Value < 0 Then
     MsgBox "マイナスです"
   End If
   If Range("P1").Value < 0 Then
     MsgBox "プラスです"
   End If
 End Sub
 といった風にです。(内容は感知しません)

(γ) 2018/12/14(金) 21:11


沢山の方々からの返信ありがとうございます。
色々説明していただき大変感謝しております。
恥ずかしながら親切に教えていただいた事を
読み返しながら調べさせていただいてる状況です。
私のような初心者が質問していいものかと悩みましたが
多くの方々からの回答に感服しながら、
とりあえずは回答していただいた事をまず理解する所から
させて頂きます。
皆様方大変ありがとうございました。

(落ち葉マーク) 2018/12/14(金) 21:36


私が確認させていただいたこと((1)と(2)です)に回答いただきたいですね。
それは理解ということは必要としていないはずですので。

(γ) 2018/12/14(金) 21:39


Y様回答がとても遅くなり大変申し訳ございませんでした。
単語を調べながらのものですから
的外れな回答になった場合はご指摘お願いいたします。
質問の1ですがこのようなエラーがでます。
「実行時エラー 13 型が一致しません」
続いて2なのですが
該当するsheetになってまして
上部にはworkseetと記載されてます。
それと標準モジュールという所には
Sub 合計()
'
Selection(1).Offset(0, -1).Value = Application.Sum(Selection)

End Sub
と言うコードというようなものが書いてあります。
この合計と言うのは以前勤めてた方に設定していただきました。
これを使う時も同様のエラーが表示されます。
質問の回答になってますでしょうか?
ご指摘お願い致します。

(落ち葉マーク) 2018/12/15(土) 01:35


書き忘れたことがありました。
エラーが表示された後
If Range("P1").Value < 0 Then
の部分が黄色になってました。
(落ち葉マーク) 2018/12/15(土) 01:41

 >そもそもF9「再計算」コマンドは(手動計算で一つでも計算元の値が変わっているなどして)実際に再計算が必要ないセルは再計算しません。 
 つまり「再計算」コマンドを実行しても、実際には再計算が必要なセルが一つもないならばExcelは再計算しませんからイベントも発生しません。 

 有無を言わさず再計算するものと思ってました。
 だから、15年以上使おうとも思ってなかった。
 揮発性関数だけだったのか・・・。

 >再計算が必要なくても強制的に再計算を行いたい時は、Application.CalculateFullRebuildメソッドあるいはCtrl+Shift+F9を押す必要があります。

 単純な数式 =1+1 だと反応してくれなかった。

 Calculateイベントへの認識が少し変わりました。
 ありがとうございました。
(BJ) 2018/12/15(土) 01:57

 > 質問の1ですがこのようなエラーがでます。 
 > 「実行時エラー 13 型が一致しません」
 ということは、
 同じプロシージャ名のものをひとつに統合されたあとの話ですね?

 > If Range("P1").Value < 0 Then 
 > の部分が黄色になってました。
 そのときのP1セルには何が入っていますか?説明をお願いします。

 合計プロシージャがエラーになる件についても、
 エラーになった際に黄色くなっている箇所の具体的コードと
 関係するセルの値を確認して示して下さい。

 こちらからは貴方のPCは見えませんので、説明頂かなければ原因はわかりません。
(γ) 2018/12/15(土) 08:05

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.