- Excel VBA 質問スレ Part33
856 :デフォルトの名無しさん[sage]:2014/06/23(月) 11:18:51.46 ID:h9OdHO6e - >>854
たぶんメモ帳でもできるんだろうけど エクセルでシート上にメッセージを表示じゃだめなの? そっちのほうが簡単じゃね?
|
- Excel VBA 質問スレ Part33
865 :デフォルトの名無しさん[sage]:2014/06/23(月) 12:49:27.29 ID:h9OdHO6e - >>864
Private Sub UserForm_Activate() Call myForm.myButton_Click End Sub じゃなくて Private Sub UserForm_Activate() Call myButton_Click End Sub でいいんじゃないの?
|
- Excel VBA 質問スレ Part33
868 :デフォルトの名無しさん[sage]:2014/06/23(月) 16:22:31.21 ID:h9OdHO6e - そんな手間かけるより使う人達にEnter連打するなって言えば済む話じゃないか?
|
- Excel VBA 質問スレ Part33
870 :デフォルトの名無しさん[]:2014/06/23(月) 16:39:51.77 ID:h9OdHO6e - そのメッセージボックスがいかなる状態で表示されるのか不明だけれど、
メッセージ表示のトリガーをマウス操作にすれば (画面上の何らかのオブジェクトをマウスでクリックした後でメッセージが表示されるようにする) Enter連打は回避できる
|
- Excel VBA 質問スレ Part33
874 :デフォルトの名無しさん[sage]:2014/06/23(月) 21:27:39.48 ID:h9OdHO6e - >>871
まぁ、本来は>>872さんの仰る通りなんだけど、 コード書いてみたかったから書きました。 A列に名前がある行を先頭にして、B列で空白が出てきた行までの範囲の C列の値を集計して、先頭行のD列に書き込むマクロです。 処理対象シートの下の方から順次処理をして、先頭行のD列が空白ではない時点、 もしくは先頭行が1行目になった時点で処理を終了します。 なお、With 〜 のところで処理するシートを指定しているので、 使用する際はここを適宜書き換えてください。 Sub test() Dim rwA As Long Dim rwB As Long With ThisWorkbook.Sheets(1) rwA = .Cells(.Rows.Count, 1).End(xlUp).Row If .Cells(rwA, 1) = "" Then Exit Sub rwB = .Cells(rwA, 2).End(xlDown).Row Do If .Cells(rwA, 4) = "" Then Exit Do .Cells(rwA, 4) = WorksheetFunction.Sum(.Cells(rwA, 3).Resize(rwB - rwA + 1)) If rwA = 1 Then Exit Do rwB = .Cells(rwA - 1, 2).End(xlUp).Row rwA = .Cells(rwA, 1).End(xlUp).Row Loop End With End Sub
|
- Excel VBA 質問スレ Part33
876 :874[sage]:2014/06/23(月) 21:44:44.46 ID:h9OdHO6e - あれ?
書き間違えてた。 If .Cells(rwA, 4) = "" Then Exit Do じゃなくて If .Cells(rwA, 4) <> "" Then Exit Do です。 何で間違えたんだろ? (多分、3行上からIf文をコピペして "=" を "<>" に直し忘れたんですね) あと、表の開始行が1行目じゃないとエラーが出ますので、 その場合は If rwA = 1 Then Exit Do の1を開始する行に変更してください。
|
- Excel VBA 質問スレ Part33
882 :870[sage]:2014/06/23(月) 23:54:40.63 ID:h9OdHO6e - >>880
あぁ、そういうことですか。 作業中にEnter連打とか どんなバカ野郎揃いの職場なんだと思ってました、ゴメンなさい。 そんじゃあ、Yes/Noじゃなくて、Yes/No/キャンセルの3つのボタンを用意して、 デフォルトをキャンセルボタンにしておいたらどうですか? で、キャンセル選択時には再びメッセージボックスを表示するように無限ループにしておく。 あるいはメッセージボックス表示前とボタン押下後にNowで時刻を取得して 1秒以上(別に1秒じゃなくてもいいけど)経過してなければ 同様に無限ループとか。 閾値が1秒だとちょっと作業のテンポが悪すぎかもしれないんですが、 確かミリ秒単位で時間を計れるマクロがググッたらどっかに在った気がします。
|