VBA初心者のための条件分岐処理に関する添削

このQ&Aのポイント
  • Excel2000でVBAを使って条件分岐処理を作成していますが、エラーが発生しています。具体的には、8月の場合に指定したセルをクリアする処理を行いたいのですが、エラーが発生してしまいます。初心者向けのサイトを参考にしていますが、どこが間違っているのかわかりません。お手数ですが、アドバイスをいただけますと幸いです。
  • Excel2000でVBAの条件分岐処理を作成している初心者です。8月の場合に指定したセルをクリアする処理を作成していますが、エラーが出てしまいます。初心者向けのサイトを参考にしているのですが、どこが間違っているのかわかりません。Excel2000に詳しい方、アドバイスをお願いします。
  • Excel2000のVBAで条件分岐処理を作成しているのですが、エラーが発生しています。具体的には、8月の場合に指定したセルをクリアする処理をしたいのですが、正しく処理が実行されません。初心者向けのサイトを参考にしているのですが、どこが間違っているのか理解できません。Excel2000に詳しい方、アドバイスをお願いします。
回答を見る
  • ベストアンサー

添削お願いします

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です。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答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

yuukiyuuki
質問者

お礼

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

関連するQ&A

  • 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

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

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

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

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

  • VBAの書き方を教えてください 2

    以前にこちらで質問をさせて頂き、(http://okwave.jp/qa/q8451754.html)これに、VBAを追記していきたいのですが、移動したシートがアクティブする方法がわかりません。 移動したシートのA1000をアクティブにする場合、教えて頂いたVBAにどこに何を入れれば宜しいのでしょうか? よろしくお願いします。 Private Sub CommandButton1_Click() Dim k As Long, myFlg As Boolean For k = 1 To Worksheets.Count If Worksheets(k).Name = Range("A1") Then myFlg = True Exit For End If Next k If myFlg = True Then Worksheets(k).Activate Else MsgBox "該当シートなし" End If 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

  • VBAの変数の使い方

    すみません、VBA初心者です。 日付が3か月後の月末(2020/10/31)より小さいデータを他のシートにコピーするコードを作りたいです。 3か月後の日付を、2020/10/31と直打ちすると正常に機能するのですが、以下のように変数(sLast)を使用すると上手くいきません。 変数の使い方が間違っていますでしょうか? ・上手くいく Criteria1:="<=2020/10/31" ・上手くいかない Criteria1:="<=sLast " アドバイス頂戴できますと幸いです。 Sub 期限管理() Dim sLast As Date sLast = DateSerial(Year(Date), Month(Date) + 3, 0) With Worksheets("Sheet1").Range("A1") .AutoFilter Field:=14, Criteria1:="<= sLast " .CurrentRegion.SpecialCells(xlVisible).Copy .Worksheets("期限管理").Range("A1") .AutoFilter End With Worksheets("期限管理").Activate 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でオブジェクト変数にsetしたシートがactiveかどうかを調べるには?

    標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、 あるタイミングで、あるシートをそのオブジェクト変数にSetしています。 で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。 コード例) Private oSheetA as Worksheet Sub SetSheet(sName as String)   Set oSheetA = worksheets(sName) End Sub Sub SetValue(nValue as integer)   xxxxxx ←ここでoSheetAがActiveならやりたいことがある。   oSheetA.Cells(nRow, nCol) = cValue End Sub 具体的には、複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、SetValueが呼び出されたとき、oSheetAがActiveだったら、値をセットするセルが見えるようにセルをActivateかスクロールさせたいんです。

  • Excelのworkseatコマンドについて

    Excelで下記のようなマクロを実行し、入力した日付に対応するシートを開くようにしたいのですが、二つずれて表示されてしまいます。 Worksheets(d).Activateでは、左からいくつ目を表示させてしまうのでしょうか。 お知恵をお貸しください。 シートの順番は、[work][累計][1][2][3][4][5][6][7][8][9][10]・・・・[29][30][31] Sub auto_open() If MsgBox("自動実行を実施しますか", vbDefaultButton2 + vbYesNo, "自動作業") = vbNo Then Exit Sub h = InputBox("作業したい日付=") d = Day(h) k = StrConv(d, vbWide) MsgBox k Worksheets(d).Activate End Sub

  • 複数のシートに 転記

    Sub べんきょう()   Worksheets(Array(1, 3)).Select   Range("3:3").Activate   ActiveCell.ClearContents  End Sub シート1,3の3行目のデータを消したい もしくは Sub べんきょう()   Worksheets(Array(1, 3)).Select   Range("3:3").Activate   ActiveCell.Interior.color = xlNone  End Sub シート1,3の3行目の色を消したい うまくいかなくて困ってます…。 どなたかどうかご指導よろしくです。

専門家に質問してみよう