アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の設定で入力して転記はできているのですが
別sheetで日付検索かけてもヒットしません
日付転記しているsheet1のC列その他別日をN列・Q列・T列・Z列に記載しています
検索条件は合っています、各日付列をデータ→区切り位置→区切り位置指定ウィザードで
日付に変更すると検索にヒットしました
コードの設定が間違っているのでしょうか?
正しいコード教えていただけませんか?


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1

If .Value = "" Then
.Value = Format(Date, "yyyy/mm/dd")
End If

If IsNumeric(.Value) Then
If IsDate(Format(.Value, "\2\000\/00\/00")) Then
.Value = Format(.Value, "\2\000\/00\/00")
End If
End If
End With

End Sub

A 回答 (4件)

こんにちは



>入力して転記はできているのですが
>別sheetで日付検索かけてもヒットしません
肝心の転記の部分が記されていないので、以下は想像での回答になってしまいますが・・
シート上での検索等は、シリアル値(=エクセルの日付型の値)で行っているものと想像しました。


ご説明の現象から判断するに、シートのセルには文字列として日付が転記されているように思われます。
(見た目は日付形式でも、文字列と日付は異なります)
確認するには、対象セルの表示形式を「標準」にしてみてください。
エクセルの日付形式(=シリアル値)であれば「44987」等の数値が表示されるはずです。
(ご説明のシートでは、日付の文字列のままなのではないでしょうか?)


TextBox等のValue値は基本的に文字列です。
IsDate関数は、日付として「認識可能」であるかを判定するものなので、対象が文字列であっても日付と認識できれば真を返します。

>コードの設定が間違っているのでしょうか?
転記のコードが不明なので、間違いかどうかはわかりませんが、結果から想像するところ文字列で転記しているのではないかと想像します。
確実に行うなら、転記の際に文字列をシリアル値に変換し、セルの表示書式を「日付」になるようにして値をセットすれば良いものと想像します。

文字列をシリアル値に変換するには、DateValue 関数あるいは DateSerial 関数を利用することで可能です。
https://learn.microsoft.com/ja-jp/office/vba/lan …
https://learn.microsoft.com/ja-jp/office/vba/lan …
    • good
    • 1

この修正後、TextBox1に入力された日付が、検索対象となる日付列と同じ形式であることを確認し、検索を行ってください。

    • good
    • 0

このコードは、TextBox1の値が日付形式になっているかどうかを確認し、日付形式にフォーマットするコードです。

検索条件に関係する部分は含まれていませんので、別の問題がある可能性があります。

日付列を区切り位置で日付に変更した場合、その列が日付形式であることが保証されます。しかし、元の列が日付形式でない場合、検索結果が表示されない場合があります。したがって、元の列が日付形式であることを確認する必要があります。

以下の手順で日付形式であることを確認し、検索条件に合わせてコードを修正してください。

検索条件に合わせて日付列を選択する
「ホーム」タブから「数値」→「日付」をクリックし、日付形式に変更する
VBAコードを修正し、以下のようになるようにします。
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
    • good
    • 0

If .Value = "" Then


.Value = Format(Date, "yyyy/mm/dd")
End If

If IsNumeric(.Value) Then
If IsDate(.Value) Then '日付形式であることを確認
.Value = Format(.Value, "yyyy/mm/dd")
End If
End If
    • good
    • 0
この回答へのお礼

日付の個所をすべて転記設定DATEにしてみたところ
検索にもヒットしました
この場合当日の日付になってしまいますが

お礼日時:2023/03/08 16:53

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