質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

3586閲覧

テキストボックスで入力した日付を基にデータを抽出したい

Khaan_bank

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/08/28 15:12

前提

初心者です。いつもお世話になっています。

ユーザーフォームのテキストボックスに日付を入力し、その日付に基づいて元データから抽出を行い、メッセージボックスで表示させるというマクロを組んでいます。
元データには日付をシリアル値&a(または&b)で管理しているものがあります。
(例:2021/9/1 と入力すると 44075a または 44075b の2つのデータが該当します。)

実現したいこと

ユーザーフォームのテキストボックスに日付を入力し、その日付に基づいて元データから抽出を行い、メッセージボックスで表示させたいです。
(2021/9/1と入力して、VLOOKUPで44075bの値を検索し、検索範囲内にあるデータを返したいです。)

発生している問題・エラーメッセージ

WorksheetFunction クラスの VLookup プロパティを取得できません。
と表示されます。
この場合、コードが間違っているのでしょうか。
それともコード自体に問題はなく、参照先の問題なのでしょうか。

エラーメッセージ

該当のソースコード

VBA

1 2Option Explicit 3 4Private Sub CommandButton1_Click() 5 6 MsgBox 7 "数値1 : " & vbCrLf & _ 8 WorksheetFunction.VLookup("TextBox1.value" & "b", Worksheets("form2").Range("C:J"), 8, False) 9End Sub 10

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ご希望のことは下記のようなことでしょうか。

ユーザーフォームのテキストボックス(TextBox1)に 2021/9/1 と入力する。
2021/9/1 をシリアル値(44440)に変換。
セルには 44440b というような値が入力されている。
44440b をVLookupで検索し、該当する値を返したい。

※質問では、「44075bの値を検索し」となってますが、2021/9/1 のシリアル値は 44440 だと思います。

vba

1Private Sub CommandButton1_Click() 2 Dim d As Date 3 d = DateValue(TextBox1.Value) '日付型に変換 "2021/9/1"→ #2021/9/1# 4 Dim l As Long 5 l = CLng(d) 'シリアル値に変換 #2021/9/1# → 44440 6 Dim s As String 7 s = l & "b" '文字列に変換してbを付与 44440 → "44440b" 8 9 MsgBox "数値1 : " & vbCrLf & _ 10 WorksheetFunction.VLookup(s, Worksheets("form2").Range("C:J"), 8, False) 11End Sub

わかりやすいように一つずつ変換してますが、下記のように一気に変換してもOKです。

vba

1 Dim s As String 2 s = CLng(DateValue(TextBox1.Value)) & "b" 3 MsgBox "数値1 : " & vbCrLf & _ 4 WorksheetFunction.VLookup(s, 8, False)

投稿2022/08/28 16:07

hatena19

総合スコア34352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Khaan_bank

2022/08/28 22:49 編集

おはようございます。 ありがとうございます! できました! 入力したものをシリアル値に変換しないといけないんですね、勉強になりました。 ちなみに44075は2020/9/1のシリアル値でした。すみません。 いつもありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問