Page 417 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼このエラーの回避の方法を教えてください。 son 02/11/29(金) 3:45 ┗Re:このエラーの回避の方法を教えてください。 こうちゃん 02/11/29(金) 11:48 ┗Re:このエラーの回避の方法を教えてください。 son 02/11/29(金) 17:40 ┗Re:このエラーの回避の方法を教えてください。 こうちゃん 02/12/2(月) 9:41 ─────────────────────────────────────── ■題名 : このエラーの回避の方法を教えてください。 ■名前 : son ■日付 : 02/11/29(金) 3:45 -------------------------------------------------------------------------
アクティブセル値を取得して、セル内の日付・時間変更を行いたが、エラーが出ます。 下記のマクロなんですが。診断していただけますか? また、初歩的な質問なんですが、アクティブセルを取得するマクロと変更マクロは 違うところに書いた方がいいんでしょうか? Sub Macro8() Cells.Find(What:="接続開始時間", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate End Sub Sub macro2() Selection.Offset(1, 0).Select End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub get_ColumnandRow() c = ActiveCell.Column r = ActiveCell.Row MsgBox "アクティブセルは" + Str(c) + "列" + Str(r) + "行" End Sub Dim StartTim As Date Dim StartMot As String Dim StartDay As String Dim StartCel As Variant Dim N, N2, N3 As Integer Dim SttVbaDate As Date Dim Xday, T As Variant ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー N = ActiveCell.Column T = #1:00:00 PM# Do While Cells(N, 5).Value <> Empty N = N + 1 Loop N2 = N - 1 For N3 = 5 To 6 For N = 4 To N2 StartCel = Cells(N, N3).Value StartMot = Left(StartCel, 2) StartDay = Mid(StartCel, 3, 2) StartTim = Mid(StartCel, 6, 8) ★ここで黄色くなってしまいます。 SttVbaDate = StartMot & "/" & StartDay & " " & StartTim SttVbaDate = CDate(SttVbaDate) + #1:00:00 PM# SttVbaDate = SttVbaDate Xday = Format(SttVbaDate, "MMdd-hh:mm:ss") Cells(N, N3).Value = Xday Next N Next N3 End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub |
sonさん、こんにちは 見当違いでしたら、ごめんなさい。 Cellsプロパティの書式を勘違いしていませんか? #Cellsの書式:Cells(行,列) > N = ActiveCell.Column ここで N にアクティブセルの列を取得しています。 > T = #1:00:00 PM# > > Do While Cells(N, 5).Value <> Empty > N = N + 1 > Loop > N2 = N - 1 ここではデータの入力されている最終行をさがしています。 N2にはE列の最終行がセットされます。 #行と列に相関があって、あえてしているなら私の勘違いですが・・ > > For N3 = 5 To 6 > For N = 4 To N2 > StartCel = Cells(N, N3).Value > StartMot = Left(StartCel, 2) > StartDay = Mid(StartCel, 3, 2) > StartTim = Mid(StartCel, 6, 8) ★ここで黄色くなってしまいます。 エラーになった時のStartCelの値は何になっていますか? いずれにしても回答する側で再構成・検証ができるようにどんなデータ使っているかの例示をされたほうがいいと思います。 |
こうちゃんさん、ありがとうございます。 下記の図が元になっています。 ________________________________ A |B|C|D| E | F |G | --------------------------------------------- 56||||接続開始時間 | 接続終了時間| --------------------------------------------- 57||||0929-10:30:30|0929-11:40:40| 58||||0930-14:40:04|0930-15:50:50| というように、エクセルで表記されます。 また、始まりのセルが毎回違うので、下記のマクロを走らせています。 Sub search_active_cell() Cells.Find(What:="接続開始時間", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate Selection.Offset(1, 0).Select c = ActiveCell.Column r = ActiveCell.Row MsgBox "アクティブセルは" + Str(c) + "列" + Str(r) + "行" End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−− で下の時間変更マクロを次に、走らせたいのですが・・・ エラーは一致しませんと出ます。 なにかいい方法はないでしょうか? よろしくお願いします。 ▼こうちゃん さん: >sonさん、こんにちは > >見当違いでしたら、ごめんなさい。 >Cellsプロパティの書式を勘違いしていませんか? >#Cellsの書式:Cells(行,列) > >> N = ActiveCell.Column >ここで N にアクティブセルの列を取得しています。 > >> T = #1:00:00 PM# >> >> Do While Cells(N, 5).Value <> Empty >> N = N + 1 >> Loop >> N2 = N - 1 >ここではデータの入力されている最終行をさがしています。 >N2にはE列の最終行がセットされます。 > >#行と列に相関があって、あえてしているなら私の勘違いですが・・ > >> >> For N3 = 5 To 6 >> For N = 4 To N2 >> StartCel = Cells(N, N3).Value >> StartMot = Left(StartCel, 2) >> StartDay = Mid(StartCel, 3, 2) >> StartTim = Mid(StartCel, 6, 8) ★ここで黄色くなってしまいます。 >エラーになった時のStartCelの値は何になっていますか? > >いずれにしても回答する側で再構成・検証ができるようにどんなデータ使っているかの例示をされたほうがいいと思います。 |
sonさん、おはようございます。 >で下の時間変更マクロを次に、走らせたいのですが・・・ >エラーは一致しませんと出ます。 >なにかいい方法はないでしょうか? >よろしくお願いします。 前回の私の発言は検討いただけましたか? やはり行列を取り違えているようですね。 >StartTim = Mid(StartCel, 6, 8) ここで型違いエラーになるのは、列と行が間違っているためにEmptyを変換しようとしているために発生するエラーのようです。 sonさんのコードをまとめて、修正してみると以下のようになるのではないかと推察します。 試験してみてください。 #データの時間を変数Tに指定した時間数を追加したものに変更する・・でいいんですよね。 Sub test() Dim StartTim As Date Dim StartMot As String Dim StartDay As String Dim StartCel As Variant Dim N, N2, N3 As Integer Dim SttVbaDate As Date Dim Xday, T As Variant Dim c As Integer Dim r As Long Cells.Find(What:="接続開始時間", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate Selection.Offset(1, 0).Select c = ActiveCell.Column r = ActiveCell.Row T = #1:00:00 PM# N = r Do While Cells(N, 5).Value <> Empty N = N + 1 Loop N2 = N - 1 For N3 = c To c + 1 For N = r To N2 StartCel = Cells(N, N3).Value StartMot = Left(StartCel, 2) StartDay = Mid(StartCel, 3, 2) StartTim = Mid(StartCel, 6, 8) SttVbaDate = StartMot & "/" & StartDay & " " & StartTim SttVbaDate = CDate(SttVbaDate) + T Xday = Format(SttVbaDate, "MMdd-hh:mm:ss") Cells(N, N3).Value = Xday Next N Next N3 End Sub |