• 締切済み

【Excel VBA】フォームボタンの操作

IF文の中でフォームボタンを自動でクリックする処理を追記したく、 以下のコードで実行しましたが、エラーとなりました。 IF文のSubプロシージャが閉まっていないと弾かれたのですが、 どう修正すれば正常に機能しますでしょうか? ここから↓ actsht = ActiveSheet.Name For i = 1 To 12 If actsht = tmp(i) Then Flag = 1 Anser = MsgBox("翌月分シートを作成しますか?", vbYesNo + vbDefaultButton1, "確認") If Anser = vbYes Then ActiveSheet.Copy After:=ActiveSheet ActiveSheet.Name = tmp(i + 1) Sheets(actsht).Tab.ColorIndex = 2 Sheets(actsht).Range("B3").Value = Sheets("Sheet2").Range("A1").Value Sheets(actsht).Range("B4").Value = Sheets("Sheet2").Range("A2").Value ActiveSheet.Range("A2").Select Private Sub clear_Click() '※ End Sub '※ Exit For ElseIf Anser = vbNo Then Exit For End If End If Next

みんなの回答

回答No.3

>まだ、他に足りないコードがあったりするのでしょうか? 「何も無い場所」にいきなり actsht = ActiveSheet.Name For i = 1 To 12 If actsht = tmp(i) Then Flag = 1 (以下略) と書き始める事は出来ません。 「何かを実行するステートメント」は「必ず、プロシージャ(モジュール)の中に書かなければならない」のです。 プロシージャ(モジュール)とは Public Sub aaaaaa() End Sub とか Public Function bbbbbb(Param As Integer) As Integer End Function とかのように「Sub~~End Sub」「Function~~End Function」で囲まれた部分です。 プロシージャ(モジュール)の外側には「変数の宣言」しか書く事は出来ません。 元々、clearボタンをクリックすると呼ばれるclear_Click()のプロシージャの外側には「変数の宣言以外は、何も書けない」のです。 つまり、以下のようにしないといけないのです。 <----VBAコードの1行目 ' 'この位置には、コメントか、グローバル変数の宣言しか書けない ' Public Global_string_value As String Public Global_integer_value As Integer ' 'この位置には、コメントか、グローバル変数の宣言しか書けない ' Public Sub aaaaaa() ' 'この位置には、ほぼすべて、何かを実行するステートメントも書ける ' End Sub ' 'この位置には、コメントか、グローバル変数の宣言しか書けない ' Private Sub Clear_Click() ' 'この位置には、ほぼすべて、何かを実行するステートメントも書ける ' End Sub ' 'この位置には、コメントか、グローバル変数の宣言しか書けない ' <----VBAコードの最後の行

回答No.2

1つのSubモジュール、1つのFunctionモジュールの内側に、別のSubモジュールを書く事は出来ません。 以下のように、モジュールの外に追い出して下さい。 '今作っているモジュール Public Sub xxxxxxx() (略) If Anser = vbYes Then (略) '元々、Private Sub clear_Click()があった場所 Call clear_Click (略) End if (略) End Sub Private Sub clear_Click() '※ End Sub '※

caa29674
質問者

補足

すみません。 QNo.9045833に集約させていただきましたので、 本トピックスは一旦クローズさせていただきます。 QNo.9045833にて回答させていただければと思います。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

Private Sub clear_Click() '※ End Sub '※ ↓ Call clear_Click としてください。

caa29674
質問者

お礼

回答いただき、有難うございました。

caa29674
質問者

補足

回答ありがとうございます。 度々すみません。 Call clear_Click に変えて実行したところ、以下のエラーが表示されました。 ========== コンパイル エラー: Sub または Function が定義されていません。 ========== まだ、他に足りないコードがあったりするのでしょうか?

関連するQ&A