advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 27304 for マクロ (0.014 sec.)
[[20170223000247]]
#score: 2167
@digest: f84d8bb7b93edd2107e0da17fabc2477
@id: 72776
@mdate: 2017-02-23T02:38:21Z
@size: 4820
@type: text/plain
#keywords: endsab (22494), chkvalue (22494), 計マ (10227), 照渡 (8365), 値渡 (7431), 計() (4821), ン() (4587), 数型 (2880), ロ実 (2507), 中止 (2403), 余談 (2147), 渡し (2042), msgbox (2039), 中断 (1704), 力ミ (1702), 集計 (1364), 実行 (1353), ジボ (1285), マク (1274), 整数 (1238), 処理 (1235), ミス (1167), クロ (1145), macro (1021), 終了 (884), 表示 (781), を実 (668), call (648), function (620), 2017 (581), 予定 (574), 理を (570)
『MsgBox表示されたら、EndSabでマクロを終了させる方法』(ちゃんぷる)
お世話になっております アドバイスの程よろしくお願いします。 以下のような事はできますでしょうか? 同じModule内のマクロを読み込んで処理をさせたいと構想中です。 やりたいことは Bマクロ処理を行う前に Aマクロを実行させて、MsgBoxが表示されたら EndSab出来ますでしょうか? ちなみに表示内容は MsgBox"入力ミス発見。入力内容を確認し再実行してください" ・Aマクロ実行 →MsgBox表示 → EndSab(終了) →MsgBox表示されなかった → Bマクロ実行(処理) と言った感じです。 どうすればよいのか検討もつかず書き込みしました。 sub 集計() IF (Aマクロの処理でMsgBoxが表示されたら Then MsgBox "元のfileを修正してください" '処理中止 Exit Sub'抜ける EndIF '※上記でMsgBoxが表示されなければ以下の処理を実行 Bマクロ実行 end sub < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- ちゃんぷる さん Callステートメントを知っていますか? 下記のマクロをmoduleに記述した後、 アクティブシートのA1に、 「1」を入力した後にA_Macroを実行してみてください。次に、 「2」を入力した後にA_Macroを実行してみてください。 **************************************** Option Explicit Sub A_Macro() Dim x As Long'★整数型で定義 x = Range("A1").Value If x = 1 Then MsgBox "表示" Else Call 集計'★集計マクロ(プロシージャ)を実行する End If End Sub Sub 集計() MsgBox "集計マクロ実行されました" End Sub **************************************** 要約すると、下記になりますでしょうか? Aマクロでの処理に次のようなコードを書きたい ・「MsgBox表示」されたら、終了(【sub 集計】を実行しない) ・「MsgBox非表示」なら、【sub 集計】を実行 どんなときに、AマクロでMsgBoxを表示したいのでしょうか? 上記の例では、x=1のときだけ、MsgBoxを表示しています。 それ以外の★整数(xをLong型で定義しているため)を入れたときは、 集計マクロを実行します。 余談ですが、…。 Call 集計 と書きましたが、 ★引数がある場合は、集計()のカッコ内に引数を記述します。 「参照渡しと値渡し」については、下記を参照 「ByRefとByVal」と同じ意です。 http://officetanaka.net/excel/vba/tips/tips94.htm (!!!) 2017/02/23(木) 03:31 ---- 横から失礼。 To !!!さん > 余談ですが、…。 余談というより、唐突なコメントで、チャンプルさんも戸惑うんじゃないですか? とくに >「参照渡しと値渡し」については、下記を参照 >「ByRefとByVal」と同じ意です。 ちゃんぷるさんの質問文にも !!!さんのコメント内にも 「参照渡しと値渡し」という言葉は どこにも登場しないのに、いきなり ・・・については・・・ というくだりが出てますから。 そういう言葉がその前にあって、ちなみに、それについては・・・という説明ならわかりますが。 ( β) 2017/02/23(木) 10:00 ---- >『MsgBox表示されたら、EndSabでマクロを終了させる方法』(ちゃんぷる) あのですね。。。。 Msgboxを表示させるかさせないかの判断をするのも「自分」ですよね? つまり、Msgboxがどうのこうのというより、 「入力ミスがあったかどうか」で、処理を中止するかしないかを判断するってことですよね? つまり、 sub メイン() もし、入力にミスがあったら、「中断」 任意の処理を行う End sub と書けばいいのです。 なので、たとえば、 A1セルの値が1から10の間の数値でなければ、処理したくないなら、 Function ChkValue(ByVal c As Range) As Boolean Dim l As Long If IsNumeric(c(1).Value) Then l = c(1).Value Else l = -4000 End If If l > 0 And l < 11 Then ChkValue = True End If End Function Sub メイン() 'もし、入力にミスがあったら、「中断」 If ChkValue(Range("A1")) = False Then MsgBox "不正値です" Exit Sub End If MsgBox "続きの処理" End Sub FunctionプロシージャでTrueかFalseを返すように自作で関数をつくり、 それの返す答えによって、条件分岐するといいと思います。 (まっつわん) 2017/02/23(木) 10:25 ---- !!!さん シートに作業セルA1を設けて、入力チェックマクロでエラー時に「1」が入るようにして アドバイスのコードを使用して以下のようにしました。 バッチリでした。 '-----★以下のメッセージボックスが表示=A1に値1が入る(エラーあり)の場合は処理を終了----- Dim x As Long '★整数型で定義 Call 請求用_予定重複エラーチェック '呼び出しマクロ(予定に重複がないか再度チェック) 'エラーがあれば、A1に1が入るので・・・ x = Range("A1").Value If x = 1 Then ' '定数に対し値は1が選択 '処理中止 Exit Sub Else '通常処理 ※別のマクロ実行で表示される メッセージボックスの表示有無を取得するコードはあるのでしょうか 探してみましたが、ありませんでした。 何故そのようなことをするのか・・・理由ですが →別のマクロをCallする理由は、長いコードなので、本体マクロに組み込むのは避けたいからでした。 (ちゃんぷる) 2017/02/23(木) 11:38 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201702/20170223000247.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97055 documents and 608272 words.

訪問者:カウンタValid HTML 4.01 Transitional