ここから本文です

ThisWorkbookに下記の内容を書きましたが、エラーメッセージが表示されます。 ど...

アバター

ID非公開さん

2017/4/1612:22:33

ThisWorkbookに下記の内容を書きましたが、エラーメッセージが表示されます。
どこを、どう、書き換えれば良いのでしょうか?

Private Sub Workbook_SheetChange(ByVal Target As Range)

If Target.Count <> 1 Then Exit Sub
With Target
Application.EnableEvents = False
If Not Intersect(Target, Range("F6:F10")) Is Nothing Then
If .Value = "" Or Not IsNumeric(.Value) Then GoTo Label
If .Value >= 2400 Or .Value Mod 100 >= 60 Then GoTo Label
.Value = TimeSerial(Int(.Value / 100), .Value Mod 100, 0)
.NumberFormatLocal = "h:mm"
End If
If Not Intersect(Target, Range("E6:E10")) Is Nothing Then
Select Case .Value
Case 1: .Value = "1"
Case 2: .Value = "2"
End Select
End If
Application.EnableEvents = True
Exit Sub
Label:
MsgBox "確認"
.ClearContents
Application.EnableEvents = True
End With

End Sub

Is Nothing Then,Value Mod 100,If Target.Count,1 Then Exit Sub,End If,ThisWorkbook,コード

閲覧数:
28
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

nag********さん

2017/4/1613:52:51

既に回答がついていますが・・・

Private Sub Workbook_SheetChange(ByVal Target As Range)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
としてください。

シートモジュールのWorksheet_Changeと混同されているかもしれませんが、Workbook_SheetChangeにはマクロが呼ばれた際に「変更されたセルが存在するシートのオブジェクト」が格納されるShという引数があります。

MSDN - Workbook.SheetChange イベント
https://msdn.microsoft.com/ja-jp/library/office/ff196611.aspx


蛇足ですが・・・
①「Goto ラベル」は使わないようにしましょう。「ラベルに飛ばす」プログラミングは30年前の遺物です。プログラマーを生業をしている人がこんなコードを書いたら先輩や上司からこっぴどく叱られます。

②E6:E10が数値の1か2のときは文字列の1か2にしたいようですが、それならE6:E10の書式設定を「文字列」にしておけば済む話だと思うのですが?それとも「1か2のときだけ文字列として扱いたい」という事情があるのでしょうか?

③コードにはなるべく「コメント」で「何をしているか」を書いておきましょう。半年もしたらコードを書いた本人も「そのコードで何をしたかったのか」を忘れてしまいます。

ベストアンサー以外の回答

1〜1件/1件中

ja7********さん

2017/4/1613:19:49

まず、ちょっと見た感じで・・・

> ThisWorkbookに下記の内容を書きましたが、~~
> Private Sub Workbook_SheetChange(ByVal Target As Range)

このコード ↑ いちいち 「手打ち 」 したのですか?
「ThisWorkbook」 に この引数だけのイベントは、無いと思いますが・・・

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

これ ↑ ではありませんか?

あと・・・
なんで こんな質問に「ID非公開」なの?
どういう考え方しているんですかね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる