advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 37667 for IF (0.007 sec.)
[[20100316112608]]
#score: 1591
@digest: c251f8b752a7ad096f013178d979c7b6
@id: 48337
@mdate: 2010-03-16T06:41:52Z
@size: 6030
@type: text/plain
#keywords: sinya2 (63048), sinya1 (63048), mytime (34784), 間co (28021), 間di (26027), 夜終 (20894), 夜開 (20449), datediff (14398), myr2 (11002), myr1 (8928), timeserial (8873), 数考 (6235), timevalue (6176), target (5367), 深夜 (4821), 行・ (2899), enableevents (2792), 始時 (2378), numberformatlocal (2309), buf (2220), 了時 (2153), change (1822), ・^^ (1596), じマ (1538), const (1504), columns (1475), application (1401), column (1395), date (1377), worksheet (1269), elseif (1216), intersect (1211)
『同じシートでマクロを組む場合』(あさ)
Private Sub Worksheet_Change(ByVal Target As Range) A行・B行でマクロを組んだ場合最初のこの↑はエラーにならないのですが C行・D行で同じマクロを組むと Private Sub Worksheet_Change(ByVal Target As Range)が黄色になってしまい コンパイルエラー:名前が適切ではありませんWorksheet_Change とでてしまいます。 VB初心者です。 宜しくお願い致します。 ---- Private Sub Worksheet_Change(ByVal Target As Range) If or(target.columns = 1,target.columns = 2) Then elseif or(target.column = 3,target.column = 4) Then とか、条件式で分岐させます。 BJ ---- BJさん 私もよく間違えますが、ワークシート関数とVBAの表記の違いが・・・^^; >If or(target.columns = 1,target.columns = 2) Then >elseif or(target.column = 3,target.column = 4) Then If Target.Columns = 1 Or Target.Columns = 2 Then ElseIf Target.Column = 3 Or Target.Column = 4 Then (momo) ---- すみません。 s が余計なものが混じってました。 target.columns ↓ target.column 追加、 あ、そうか、Orの書き方ですね。 しばらく気がつかなかった。 BJ ---- このコードを入力しましたが同じエラーになってしまいます。 C行とD行・F行とG行・I行とJ行に同じマクロを入力したいんですが Private Sub Worksheet_Change(ByVal Target As Range) If Target.Columns = 1 Or Target.Column = 2 Then Const Sinya1 As Date = "5:00" '深夜終了時間 Const Sinya2 As Date = "22:00" '深夜開始時間 Dim myTime As Date, buf As Long If Target.Count > 1 Then Exit Sub If Application.Intersect(Target, Me.Range("C5:D35")) Is Nothing Then Exit Sub Application.EnableEvents = False With Target If .NumberFormatLocal Like "*:*" Then .Value = Int(.Value) & ":" & Round((.Value - Int(.Value)) * 100, 0) End If If Me.Range("C" & .Row).Value <> "" And Me.Range("D" & .Row).Value <> "" Then myTime = TimeValue(Me.Range("C" & .Row).Text) If myTime < Sinya1 Then buf = DateDiff("n", myTime, Sinya1) End If myTime = TimeValue(Me.Range("D" & .Row).Text) If myTime > Sinya2 Then buf = buf + DateDiff("n", Sinya2, myTime) End If Me.Range("E" & .Row).Value = TimeSerial(0, buf, 0) End If End With Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) ElseIf Target.Column = 3 Or Target.Column = 4 Then Const Sinya1 As Date = "5:00" '深夜終了時間 Const Sinya2 As Date = "22:00" '深夜開始時間 Dim myTime As Date, buf As Long If Target.Count > 1 Then Exit Sub If Application.Intersect(Target, Me.Range("F5:G35")) Is Nothing Then Exit Sub Application.EnableEvents = False With Target If .NumberFormatLocal Like "*:*" Then .Value = Int(.Value) & ":" & Round((.Value - Int(.Value)) * 100, 0) End If If Me.Range("F" & .Row).Value <> "" And Me.Range("G" & .Row).Value <> "" Then myTime = TimeValue(Me.Range("F" & .Row).Text) If myTime < Sinya1 Then buf = DateDiff("n", myTime, Sinya1) End If myTime = TimeValue(Me.Range("G" & .Row).Text) If myTime > Sinya2 Then buf = buf + DateDiff("n", Sinya2, myTime) End If Me.Range("H" & .Row).Value = TimeSerial(0, buf, 0) End If End With Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) Const Sinya1 As Date = "5:00" '深夜終了時間 Const Sinya2 As Date = "22:00" '深夜開始時間 Dim myTime As Date, buf As Long If Target.Count > 1 Then Exit Sub If Application.Intersect(Target, Me.Range("I5:J35")) Is Nothing Then Exit Sub Application.EnableEvents = False With Target If .NumberFormatLocal Like "*:*" Then .Value = Int(.Value) & ":" & Round((.Value - Int(.Value)) * 100, 0) End If If Me.Range("I" & .Row).Value <> "" And Me.Range("J" & .Row).Value <> "" Then myTime = TimeValue(Me.Range("I" & .Row).Text) If myTime < Sinya1 Then buf = DateDiff("n", myTime, Sinya1) End If myTime = TimeValue(Me.Range("J" & .Row).Text) If myTime > Sinya2 Then buf = buf + DateDiff("n", Sinya2, myTime) End If Me.Range("K" & .Row).Value = TimeSerial(0, buf, 0) End If End With Application.EnableEvents = True End Sub こちらのコードをこのエクセルの学校のログからコピーしました (あさ) ---- [[20100312112651]] 『時刻の入力』(まゆ) こちらで私が回答したコードですね^^; こんな感じにしてください。 Private Sub Worksheet_Change(ByVal Target As Range) Const Sinya1 As Date = "5:00" '深夜終了時間 Const Sinya2 As Date = "22:00" '深夜開始時間 Dim myTime As Date, buf As Long, myR1 As Range, myR2 As Range If Target.Count > 1 Then Exit Sub If Application.Intersect(Target, Me.Range("C5:D35,F5:G35,I5:J35")) Is Nothing Then Exit Sub Application.EnableEvents = False With Target If .NumberFormatLocal Like "*:*" Then .Value = Int(.Value) & ":" & Round((.Value - Int(.Value)) * 100, 0) End If Select Case .Column Case 3, 6, 9 Set myR1 = Target Set myR2 = Target.Offset(, 1) Case 4, 7, 10 Set myR1 = Target.Offset(, -1) Set myR2 = Target End Select If myR1.Value <> "" And myR2.Value <> "" Then myTime = TimeValue(myR1.Text) If myTime < Sinya1 Then buf = DateDiff("n", myTime, Sinya1) End If myTime = TimeValue(myR2.Text) If myTime > Sinya2 Then buf = buf + DateDiff("n", Sinya2, myTime) End If myR2.Offset(, 1).Value = TimeSerial(0, buf, 0) End If End With Application.EnableEvents = True End Sub ちなみに Private Sub Worksheet_Change(ByVal Target As Range) は シートモジュールのイベントプロシージャですので複数作成することはできません。 1つのプロシージャで組まないといけないのでIFやSelectCaseで分岐したり イベント実行の判定も複数考慮する必要があります。 (momo) ---- (momo)様 ありがとうございました。<m(__)m> 助かりました。(あさ) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201003/20100316112608.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97012 documents and 608132 words.

訪問者:カウンタValid HTML 4.01 Transitional