[[20101213182010]] 『Private Sub』(どうしようもないやつ)  ページの最後に飛ぶ

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

 

『Private Sub』(どうしようもないやつ)
 どうしてもわかりません
 Private Subとついたマクロの実行の仕方がわかりません。
 普通のマクロだったらマクロボタンに登録してクリックすれば
 作動しますがPrivate Subにはボタンがありません。
 どうやって実行するのですか。
 教えて下さい。
 例 
 Private Sub Worksheet_Activate()
 Dim ANS As Integer
 ANS = MsgBox("Bをクリアしてもいいですか?", _
 vbYesNo + vbInformation, "クリア実行")
 If Sheets("B").Range("D6").Value <> "" Then
 Select Case ANS
 Case vbYes
 Sheets("営業確認").Range("D6:E1000").Select
 Selection.ClearContents
 Sheets("入力").Select
 MsgBox "クリアしました"
 Case vbNo
 MsgBox "キャンセル"
 End Select
 Else
 End If 
 End Sub
 それと
 現在以下のコードで対応しているのですが、
 10列進んだ後元の位置に戻り2行下げてまた続行したいのですが
 こんな動きはできるでしょうか?
 Private Sub CommandButton1_Click()
   Dim r As Integer
   Dim c As Integer
      r = ActiveCell.Row
      c = ActiveCell.Column
    ActiveCell.Value = TextBox1.Value
      TextBox1.Value = Empty 
      TextBox1.SetFocus
      Cells(r, c + 1).Select
 End Sub
 Excel2003,WindowsXP
 下記の二つが前提条件ですが、
 TextBox1 は必ず空でない
 その行にはこれ以外のデータが書かれていない
 こんな感じでどうでしょうか。
 下記は上のどこにいれるのですか 
   If Application.WorksheetFunction.CountA(ActiveCell.EntireRow) = 10 And c >= 10 Then
        Cells(r + 2, c - 9).Select
    Else
        Cells(r, c + 1).Select
    End If
 どうすれは作動するのでしょうか。


 ご質問者は 中年さん と同一の方ですか? 
 であれば、紛らわしいのでハンドル名は変えない方が良いかと思います。

 また、過去の参照は全文を掲載しなくとも、リンクだけで十分かと思います。
[[20101213110402]]

 ご質問の、 Private Sub Worksheet_Activate() はイベントによって実行されるマクロなので、
 シートを切り替えてアクティブになったときに実行されるものです。

 直接実行したい場合はタイトル部分にカーソルを置き、F5 で実行できると思います。
 (但しこれで実行できるのは、引数がないプロシージャだけです。)
 (Mook)


 有難うございました。今後ともご指導お願いします。
 中年さんが同じ質問をしておられることは知りませんでした。
 もっと隅々まで見て質問しなければいけませんね。
 どうもありがとうございました。
 (どうしようもないやつ)

 ん?中年さんが同じ質問をしているというより、質問の後半は 中年さんがされたリンク先の
 質問&回答の丸ごとコピーではないですか?
 何のために、それが貼り付けられているかは不明ですが。

 ・・・と思ったら、質問文が追加されていたみたいですね。見落としていました。
 >下記は上のどこにいれるのですか 
 >  If Application.WorksheetFunction.CountA(ActiveCell.EntireRow) = 10 And c >= 10 Then
 >      Cells(r + 2, c - 9).Select
 >  Else
 >      Cells(r, c + 1).Select
 >  End If
 >どうすれは作動するのでしょうか。

 これは、こちらではなくもとの質問でされた方が良いと思います。

 元のコードの下記の部分の代わりに、提示した5行を置きます。
      Cells(r, c + 1).Select
 (Mook)


 せっかく教えていただいたのにいまだに実行できません。
 教えていただいた「ご質問の、 Private Sub Worksheet_Activate() はイベントによって実行されるマクロなので、
 シートを切り替えてアクティブになったときに実行されるものです。」
 この「シートを切り替えて」というのは、Sheet2で何か作業して
 Sheet1に戻ったときに動作するものなんですか。
 いろいろ試したけれど何も変化がありません。
 どうすればPrivate Sub Worksheet_Activate()は動くようになるのでしょうか
(どうしようもないやつ) 

 ご迷惑をおかけしました。
 やっと理解できました。
 パソコンの調子が悪かったようです。
 以前教えていただいたものを作動させたら動くようになりました。
 どうもすみませんでした。
 (どうしようもないやつ)

 余計なお世話ですが、
 >パソコンの調子が悪かったようです。
 という原因はあまりない気がします。

 推測ですが、マクロが無効になっていたか、EnableEvents が False になっていた
 せいではないでしょうか。
 次回同様の現象が発生したら、このあたりを確認することをお勧めします。
 (Mook)

 Mook様有難うございます。
 せっかくのご指導ですが
 「EnableEvents が False になっていた」の意味がわかりません。
 調べてみます。
 調べました。
 「他のアクションを起動にして、別の動作をするというものです」
 ということですよね。 
 (どうしようもないやつ)

 本来マクロというものがわかっていないのです。
 ボタンをクリックするだけで好きなことが出来る。
 その程度の知識です。
 だからPrivate Subなにやらとか CommandButton1なんかがでてくるとさっぱりわかりません。
 その程度のやつです。
 ご指導有難うございます。


 >ボタンをクリックするだけで好きなことが出来る。
 >その程度の知識です。
 >だからPrivate Subなにやらとか CommandButton1なんかがでてくるとさっぱりわかりません。

 Privateというキーワードの意味とイベント(又は、イベントプロシジャー)の意味を
 ごちゃ混ぜにしていませんか?

 確かにPrivate Sub Worksheet_Activate() のようにイベントプロシジャーは
 規定値は、Privateキーワード付で表現されますが、
 Privateキーワードが付いている ---> イベントプロシジャーではありません。

 Privateキーワードの意味
 イベントプロシジャーの意味

 を検索して、きちんと理解するようにしてください。
 VBAは、イベントドリブン方式を採用している言語ですから、この辺りを
 しっかり理解する必要はありますよ!!
 

 それから、
 >普通のマクロだったらマクロボタンに登録してクリックすれば
 >作動しますがPrivate Subにはボタンがありません。

 このマクロボタンとは、コマンドバー「フォーム」にあるボタンの事だと思いますが、
 Privateキーワードを使っていると、一覧には、表示されませんが、
 直接入力すれば、ボタンにPrivate付きのマクロも登録することは出来るんですよ、実は・・・。

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


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