プロが教える店舗&オフィスのセキュリティ対策術

excel vbaについての質問です
(vbaについて初心者です)

現在、エクセルで勤務記録表を作成しています。

同じシートが70枚くらいあります。
各シートは同じ構成で、B6からC36までは時刻を打ち込み、
4ケタの数字を打ち込むと時間になるようにしたいと思っています。
例)1234⇒12:34


以下のようなコードを貼り付けているのですが
vbaの編集をする「microsoft visual basic」というウインドウのところで、各シートをダブルクリックすると
出てくるウインドウに一つ一つ貼り付けないとうまく動きません

■全てのシートに貼り付けをしなくても動作する方法を教えて
いただきたく、お願いします。
コードに誤りがあれば教えていただきたくお願いします。

(標準モジュールや「this workbook」にも貼り付けをしてみたのですが、思うようになりませんでした)

以下
======================


Private Sub Worksheet_Change(ByVal Target As Range)


On Error Resume Next

Dim 入力値 As Variant
Dim 時 As Long
Dim 分 As Long

If Intersect(Target, Range("B6:C36")) Is Nothing Then Exit Sub

入力値 = Target.Value

'1


If 入力値 = 0 Then
入力値 = terget.Value
'2


ElseIf Target.Count <> 1 Then


'And (入力値 <> 0) Then
' メッセージを出す
MsgBox "複数セル選択できません", vbCritical
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With

'3
ElseIf VarType(入力値) <> vbDouble Then
MsgBox "時刻を表す数字を入力してください。"


ElseIf 入力値 < 1 Then
Exit Sub

Else
入力値 = Target.Value
時 = 入力値 \ 100
分 = 入力値 Mod 100





Application.EnableEvents = False

Target.Value = TimeSerial(時, 分, 0)

Application.EnableEvents = True

End If
End Sub

A 回答 (1件)

ThisWorkbookに


Private Sub ・・・の部分だけ変えて同じコードを貼り付ければ動作します。

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

'中身は同じコードを貼り付け

End Sub
    • good
    • 0
この回答へのお礼

できました!
ありがとうございましたm(__)m

お礼日時:2010/04/13 14:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!