• ベストアンサー
  • すぐに回答を!

添削お願いします

VBAが初心者で申し訳ありません。 Sub SetValue() If Month(Date) = 8 Then Sub ClearCell() Worksheets("Sheet4").Activate Worksheets("Sheet4").Range("K15").Clear End Sub End If End Sub 今が8月なら Sheet4 のセルK15 をクリアするものを作ろうとしましたが 上記で Date の部分が反転した状態で End Subが必要です とエラーが出ました。 ネット上の初心者向けサイトの切り張りをした状態で他の部分も間違いがあるかと思いますが どこがおかしいのでしょうか? 使用しているのはExcel2000です。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数59
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

Sub SetValue()  If Month(Date) = 8 Then   Worksheets("Sheet4").Activate   Worksheets("Sheet4").Range("K15").Clear  End If End Sub 以下、不要 Sub ClearCell() End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

うまくいきました。ありがとうございました。

関連するQ&A

  • シートの表示を移動をしないようにするには

    初心者のため、簡単なことかも知れないのですが、ご教授ください。 シート1内にコマンドボタンをつけて、クリックするとシート2のデータを全部クリアする簡単なVBAが実行します。 実行後、シート2が表示されます。 実行した時点でのシート1をそのまま、表示しておくには、どのような 定義が必要ですか? 今は下記のように書いています Sub ClearCell_1() 'シート名:sheet2のクリア Worksheets("sheet2").Activate Worksheets("sheet2").Cells.Clear End Sub どなたか教えてください。よろしくお願いします

  • シート間のコピー時の列幅と行の高さ

    マクロ初心者です。下記はシート間のコピーですが、列幅と行の高さも一緒にコピーするにはどのように書いたらよいでしょうか。マクロは"sheet1"に入っています。よろしくお願いいたします。 Sub macro1() Worksheets("sheet2").Activate Cells.Clear Worksheets("sheet1").Activate Worksheets("sheet1").UsedRange.Copy ActiveSheet.Paste Destination:=Worksheets("sheet2").Range("A1") End Sub

  • 下記エクセル列の並び替えマクロで、Callの際に変数が引き継がれません

    下記エクセル列の並び替えマクロで、Callの際に変数が引き継がれません。 何か方法はありませんでしょうか。 Sub 各学校() Dim i As Integer Worksheets("Sheet1").Activate For 元列 = 1 To 16 If Cells(1, i) = "学校" Then 新1列 = 元列 ElseIf Cells(1, i) = "住所" Then 新2列 = 元列 ElseIf Cells(1, i) = "電話" Then 新3列 = 元列 (略) End If Next Call 列の並び替え End Sub Sub 列の並び替え() Worksheets("Sheet2").Activate Cells.Clear Worksheets("Sheet1").Columns(新1列).Cut Worksheets("Sheet2").Columns("A").Insert Worksheets("Sheet1").Columns(新2列).Cut Worksheets("Sheet2").Columns("B").Insert Worksheets("Sheet1").Columns(新3列).Cut Worksheets("Sheet2").Columns("C").Insert (略) End Sub

  • EXCEL マクロ 

    お世話になります。 マクロは初心者です。 セルの数値を参照して、シートをアクティブにしたいのですが 下記のような繰り返しでシートが30ぐらいあるので、簡単な 表現に出来ないでしょうか。 宜しくお願いします。 Private Sub Workbook_Open() If 0 <= Worksheets(4).Range("M1") < 7 Then Worksheets(4).Activate End If If 0 <= Worksheets(5).Range("M1") < 7 Then Worksheets(5).Activate End If If 0 <= Worksheets(6).Range("M1") < 7 Then Worksheets(6).Activate End If If 0 <= Worksheets(7).Range("M1") < 7 Then Worksheets(7).Activate End If If 0 <= Worksheets(8).Range("M1") < 7 Then Worksheets(8).Activate End If If 0 <= Worksheets(9).Range("M1") < 7 Then Worksheets(9).Activate End If End Sub

  • エクセル2010を使用しています。

    前回VBAについてご教授頂きました。 Private Sub Workbook_Open() 'この行から With Worksheets("Sheet1") If .Range("I20") <> Date Then .Range("H20") = .Range("H20") + 4000000 * ((Year(Date) - Year(.Range("I20"))) * 12 + Month(Date) - Month(.Range("I20"))) .Range("I20") = Date End If End With End Sub 'この行まで ここまで教えて頂きました。 一つ出来ると、別の欲が沸いてくるもので、次は、特定の月(4月、7月、10月、1月)に1000000ずつ増やしていきたいです。 度々申し訳ございませんが、ご教授頂きたいです。

  • エクセルVBAでSheet1.ActivateとSheet(n).Activate

    エクセル2000です。 VBAでの疑問点を教えてください。 Sub test1() Sheet1.Activate MsgBox ActiveSheet.Name End Sub これは問題なく作動します。 Sub test2() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheet(n).Activate MsgBox ActiveSheet.Name Next End Sub これは「SubまたはFunctionがていぎされていません」というエラーになります。 もちろん、 Sub test3() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheets(n).Activate MsgBox ActiveSheet.Name Next End Sub のように書けばOKなのは存じておりますが、これではSheet名に係らず、左から順番となってしまいます。 Sub test4() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheets("Sheet" & n).Activate MsgBox ActiveSheet.Name Next End Sub のように明確にシート名として記述すればOKなのですが、それでは、Test1のSheet1.Activate が通って、Sheet(n).Activate が通らないのはなぜでしょう? しょうもない質問でごめんさない。

  • VBA どうしてなのでしょうか?

    どうしてなのかまったくわかりません… Sub test() Dim TW As Worksheet Set TW = Worksheets("Sheet2") TW.Activate Range("G5").Activate End Sub は良いのに Sub test() Dim TW As Worksheet Set TW = Worksheets("Sheet2") TW.Range("G5").Activate End Sub はエラーがでます… この理由をご存知の方いらっしゃいますか?? よかったら教えていただけませんか?

  • 初歩的な質問です!sheetの選択

    よろしくお願いします! エクセル2003,Sheet1を右クリック>コードを表示を選択して、下のように記述したところ、予想と違う動作をしました。 sheet1,2のそれぞれのA1セルに各々のsheet名を入力したかったのですが、失敗した原因はどうしてでしょうか。activateをselectにしても変わりませんでした。 初歩的なことだと思いますが、どうぞよろしくお願いします! Sub macro() Worksheets("sheet1").Activate Cells(1, 1) = "sheet1です。" Worksheets("sheet2").Activate Cells(1, 1) = "sheet2です。" End Sub

  • 「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」

    「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」 というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。 どこが間違っているのか教えてください。 また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。 よろしくお願いいたします。 Sub Cell( n , "A" )に1を記入する() Dim n As Long Dim m As Long Dim s As Long '現在のセル( n , "A" )より14行上に数値がないことを確認するために '14行上のセルを全て足し算しています。 For m = n - 14 To n - 1 s = s + Worksheets("Sheet1").Cells(m, "A").Value Next '足し算結果がゼロならば何も記入していないと判断し、 '数字の「1」を記入します。 If s >= 1 Then Worksheets("Sheet1").Cells(n - 1, "A").Value = 0 ElseIf s = 0 Then Worksheets("Sheet1").Cells(n - 1, "A").Value = 1 End If End Sub

  • VBA関数

    PC ほぼ素人です。ネットで調べて、下記のコードを作成できました。 バージョンは2007 Sub 抽出() Worksheets("Sheet5").Activate Worksheets("Sheet5").Range(Cells(1, 1), Cells(328, 18)).Clear With Worksheets("Sheet3").Range("A8") .AutoFilter Field:=1, Criteria1:=Worksheets("Sheet3").Range("a2") ''(1) .AutoFilter Field:=2, Criteria1:=Worksheets("Sheet3").Range("b2") ''(1) .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("Sheet5").Range("A1") ''(2) .AutoFilter ''(3) End With Worksheets("Sheet5").Activate End Sub Sheet5に抽出後、そのデータを書き換え Sheet3へ戻したいのですが可能なのでしょうか?      A  B      C     D      E      F      G   1  月  日   得意先   前回    数量    今回    数量   2  3   5    A商事   1月15日   2     2月5日   3   抽出後、Sheet3には、ABDEFGを戻したいのです。 説明不足かもしれませんが、どうか宜しくお願い致します。