過去ログ

                                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
 ───────────────────────────────────────  ■題名 : Re:このエラーの回避の方法を教えてください。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/29(金) 11:48  -------------------------------------------------------------------------
   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の値は何になっていますか?

いずれにしても回答する側で再構成・検証ができるようにどんなデータ使っているかの例示をされたほうがいいと思います。
 ───────────────────────────────────────  ■題名 : Re:このエラーの回避の方法を教えてください。  ■名前 : son  ■日付 : 02/11/29(金) 17:40  -------------------------------------------------------------------------
   こうちゃんさん、ありがとうございます。
下記の図が元になっています。
________________________________
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の値は何になっていますか?
>
>いずれにしても回答する側で再構成・検証ができるようにどんなデータ使っているかの例示をされたほうがいいと思います。
 ───────────────────────────────────────  ■題名 : Re:このエラーの回避の方法を教えてください。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/12/2(月) 9:41  -------------------------------------------------------------------------
   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
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 417