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

C2からC100までのセルの範囲内の値が0:00のセルをA1に入力してある1:00に変更するマクロの設定方法を教えて下さい。よろしくお願い致します。

質問者からの補足コメント

  • どう思う?

    ご回答いただき有難うございます。

    ※ セルの表示形式が [h]:mm になっていて
    実データが「24:00」のような場合も 見た目は「0:00」になりますが
    それらは無視されます。m(_ _)m
    ⇒別件なのですが、C1からC100の範囲内で、関数でリンクした実データ[h]:mmの「0:00:00」のデータは見た目が空白になってしまうのですが、「0:00」と表示することは出来ますでしょうか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/06/07 15:33
  • どう思う?

    ⇒別件なのですが、C1からC100の範囲内で、関数でリンクした実データ[h]:mmの「0:00:00」のデータは見た目が空白になってしまうのですが、「0:00」と表示することは出来ますでしょうか。
    マクロで「0:00」と表示する方法がありましたら教えていただきたいです。よろしくお願い致します。

      補足日時:2018/06/07 15:37
  • どう思う?

    ご連絡有難うございます。
    教えていただいた内容ですと、下記の通りになるかと思います。

    Sub Sheet1時間修正()
    Dim c As Range
    For Each c In Range("C2:C100")
    If Hour(c) Mod 24 = 0 And Minute(c) = 0 Then
    c = Range("A1")
    End If
    Next c
    End Sub

    上記の内容でマクロ実行しますと、「型が一致しません」というエラーになります。
    どこを直したらよいか教えていただけますと、大変有難いです。
    よろしくお願い致します。

    No.4の回答に寄せられた補足コメントです。 補足日時:2018/06/08 11:34

A 回答 (5件)

>、「型が一致しません」というエラーになります。



もしかして、文字列データが含まれていませんか?

Sub Sheet1時間修正()
  Dim c As Range
    For Each c In Range("C2:C100")
      If IsNumeric(c) Then
        If Hour(c) Mod 24 = 0 And Minute(c) = 0 Then
          c = Range("A1")
        End If
      End If
    Next c
End Sub

としたらどうなりますか?m(_ _)m
    • good
    • 0
この回答へのお礼

エラーが発生しませんでした。有難うございました。

お礼日時:2018/06/11 12:16

なんどもごめんなさい。



前回の
>If Hour(c) Mod 24 = 0 Then

>If Hour(c) Mod 24 = 0 And Minute(c) = 0 Then

に変更してください。
どうも失礼しました。m(_ _)m
この回答への補足あり
    • good
    • 0

No.1です。



実は投稿後間違いに気づいたのですが・・・
>セルの表示形式が [h]:mm になっていて

>セルの表示形式が h:mm になっていて
でなければ「0:00」という表示にはなりませんね。
どうも失礼しました。

さて
>関数でリンクした実データ[h]:mmの「0:00:00」のデータは見た目が空白になってしまうのですが、
なぜ「空白」になるのか判らないのですが、
単純にセルの表示形式の操作ではダメですか?

それとも
実際は「24:00」のデータだけど、そのデータも対象にしたい!というのであれば
前回のコードの
>If c = 0 Then

>If Hour(c) Mod 24 = 0 Then
に変更したらどうなりますか?m(_ _)m
    • good
    • 0

マクロとのことで、質問者様のご意向には添いかねるかもしれませんが、


エクセルの標準機能の中に、「検索と置換」がありますので、そちらで作業してみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

その方法もありますね。ご回答有難うございました。

お礼日時:2018/06/07 15:35

こんにちは!



範囲内には空白セルはないという前提です。
>A1に入力してある1:00に変更する

ごくごく単純に・・・

Sub Sample1()
Dim c As Range
For Each c In Range("C2:C100")
If c = 0 Then
c = Range("A1")
End If
Next c
End Sub

くらいで大丈夫だと思います。

※ セルの表示形式が [h]:mm になっていて
実データが「24:00」のような場合も 見た目は「0:00」になりますが
それらは無視されます。m(_ _)m
この回答への補足あり
    • good
    • 0

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