Excelにて、現在、ユーザーフォームのコンボボックスを使い検索をしています
検索条件として、コンボボックス1(請求先)、コンボボックス2(検索月)にて検索を
行っていたのですが、年が変わると年度の検索ができないため
今回、コンボボックス3(検索年)追加してコンボボックス1,2,3の条件で検索をしたいのですが
私には難しすぎて、何処を変えて追加するのか分からず困っています。どなたかご教授願います
下記、現在のコードです
Dim Sh(1) As Worksheet '検索開始
Dim Cri As Range
Dim St As String
Dim D1 As Date
Dim D2 As Date
Set Sh(0) = Worksheets("印刷済")
Set Sh(1) = Worksheets("月請求書データー")
Sh(1).Cells.Clear
D1 = DateSerial(Year(Date), ComboBox2.Value, 1)
'(ComboBox2.Value)の月の初日
D2 = DateSerial(Year(Date), ComboBox2.Value + 1, 1)
'(ComboBox2.Value + 1)の月の初日
If WorksheetFunction.CountIfs(Sh(0).Columns(3), ComboBox1.Value, _
Sh(0).Columns(2), ">=" & D1, Sh(0).Columns(2), "<" & D2) Then
'C列の値がCombobox1.Value 且つ B列の日付が D1以上 D2未満
Set Cri = Sh(0).Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Resize(2)
'フィルタ抽出条件のセル範囲
'印刷済 シート (右端列+1)の1行目と2行目
St = "=AND(B2>=DATE(#,@,1),B2<DATE(#,@+1,1),C2=""\"")"
St = Replace(St, "#", Year(Date))
'"#"の箇所を、本日の年 に置換
St = Replace(St, "\", ComboBox1.Value)
'"\" の箇所を、ComboBox1.Valueに置換
St = Replace(St, "@", ComboBox2.Value)
'"@" の箇所を、ComboBox2.Valueに置換
Cri.Cells(2).Formula = St
'抽出用の数式をセット
Sh(0).Range("A:A").Resize(, Cri.Column - 1).AdvancedFilter _
xlFilterCopy, Cri, Sh(1).Cells(1)
Cri.Clear
MsgBox "抽出しました"
Else
MsgBox "抽出データがありません"
End If
ご教授願います
No.2ベストアンサー
- 回答日時:
要は「Date」で操作当日の日付を強制的に使用しているのが原因で、これにコンボボックス3(検索年)で指定できるようになればいいので、
>St = Replace(St, "#", Year(Date))
>'"#"の箇所を、本日の年 に置換
を
St = Replace(St, "#", ComboBox3.Value)
のように
「Year(Date)」を「ComboBox3.Value」に変えると良いのでは?
その前にも「Year(Date)」が「D1=」と「D2=」にも使用されていますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
エクセルのセルの中の,よりも前...
-
Excelの入力済みセルに一括で、...
-
エクセルで「4」「9」抜けの...
-
企業名簿で(株)や(有)を無視し...
-
Excelからテキストへのコ...
-
Excelのmatch関数エラー原因が...
-
Excelで、半角スペースをTABに...
-
【エクセル】ピボットテーブル...
-
小数点を消す方法
-
Excelのシートにある1行...
-
Excelのアポストロフィーの削除
-
エクセルでセル内の一部分だけ...
-
excelで可視セルのみ置換
-
エクセルでセル内の一部を一括...
-
Excelの空文字セルの削除方法を...
-
EXCELで"Tab"を"@"に置換したい
-
エクセルの関数で、記号などを...
-
エクセルでスペースの記号を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelのmatch関数エラー原因が...
-
Excelの入力済みセルに一括で、...
-
エクセルのセルの中の,よりも前...
-
Excelからテキストへのコ...
-
excelで可視セルのみ置換
-
置換機能を使わずに先頭に「'」...
-
Excelで、半角スペースをTABに...
-
【エクセル】ピボットテーブル...
-
エクセルでセル内の一部を一括...
-
Excelの空文字セルの削除方法を...
-
Excelのシートにある1行...
-
エクセルの表ををメモ帳などに...
-
小数点を消す方法
-
Excelで電話番号などの-(ハイ...
-
Excelのアポストロフィーの削除
-
Excel "~区"のみを削除したい
-
エクセルでセル内の一部分だけ...
-
一括でダブルクリックした状態...
おすすめ情報
ありがとうございます。
ファイルの書式は変更できない為、現状で行いたいのですが、
無理でしょうか