Excel2007で、マクロ実行時にSheetの確認をしたいのですが、その方法を教えて下さい。
月別のシートを、毎月2枚(成績と実績)が作ってあり、当該シートを開き○月と入力することによりいろいろ作業をしたいのですが、このシート上でマクロを走らせて良いのかを判断させてから稼働するようにしたい。シートや月が間違っていたら、警告を発し処理を中止させるようにしたい。どうぞご指導をよろしくお願いします。
Sub データ並べ替え()
Dim tuki As Integer '処理月
tuki = InputBox("処理月を半角英数で入力して下さい")
Range("A2").Value = tuki
ActiveSheet.Name
End Sub
例えば、インプットボックスで入力した数字がシート名に含まれるかどうかで、処理したいシートかどうか判断するのであれば、以下を参考にして下さい。
Sub データ並べ替え()
Dim tuki As Integer '処理月
tuki = InputBox("処理月を半角英数で入力して下さい")
If ActiveSheet.Name Like "*" & tuki & "*" Then
Range("A2").Value = tuki
Else
MsgBox "シートが違います", vbCritical
Exit Sub
End If
End Sub
質問者
お礼
早速にありがとうございました。 すごい すごい !!
下記のように、変更したところ、思っていたとおりに動きました。
当方まだまだ初心者のため、ほとんど解っていないのですが、
いろいろ勉強をしていきたいと思っております。
変更後
If ActiveSheet.Name Like tuki & "月成績" Then
思い当たるエラー処理をいつくか施しました。
この中から、必要な部分だけを抜き出してもよいです。
シートは、1月、2月、3月・・となっていると仮定しています。
Sub Test1()
Dim tuki As Variant '処理月
Dim msgRet As VbMsgBoxResult
Dim ret As Variant
Start:
Do
tuki = Application.InputBox("処理月を英数で入力して下さい", "入力", Type:=2)
If VarType(tuki) = vbBoolean Then Exit Sub 'キャンセルボタン
tuki = StrConv(tuki, vbNarrow) '半角に変換
If Not tuki & "月" Like "#*月" Then Exit Do '月をいれた場合
If IsNumeric(tuki) = True Then tuki = tuki & "月": Exit Do '数字の場合
Loop
On Error Resume Next
ret = Worksheets(tuki).Range("A2").Value
If Err.Number > 0 Then
MsgBox tuki & "のシート名が違います。", vbExclamation
GoTo Start
End If
On Error GoTo 0
msgRet = MsgBox(tuki & "でよろしいですか?", vbQuestion + vbYesNoCancel)
If msgRet = vbNo Then
GoTo Start
ElseIf msgRet = vbCancel Then
Exit Sub
End If
With Worksheets(tuki)
'実行
.Select
.Range("A2").Value = tuki
End With
End Sub
お礼
早速にありがとうございました。 すごい すごい !! 下記のように、変更したところ、思っていたとおりに動きました。 当方まだまだ初心者のため、ほとんど解っていないのですが、 いろいろ勉強をしていきたいと思っております。 変更後 If ActiveSheet.Name Like tuki & "月成績" Then