Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3729 / 13645 ツリー ←次へ | 前へ→

【60399】日付検索 初心者 09/2/18(水) 14:07 質問[未読]
【60400】Re:日付検索 kanabun 09/2/18(水) 14:38 発言[未読]
【60401】Re:日付検索 初心者 09/2/18(水) 16:32 質問[未読]
【60402】Re:日付検索 kanabun 09/2/18(水) 17:24 発言[未読]
【60414】Re:日付検索 初心者 09/2/20(金) 13:51 質問[未読]
【60416】Re:日付検索 Jaka 09/2/20(金) 16:56 発言[未読]
【60426】Re:日付検索 kanabun 09/2/20(金) 20:53 発言[未読]
【60497】Re:日付検索 初心者 09/2/24(火) 13:51 お礼[未読]

【60399】日付検索
質問  初心者  - 09/2/18(水) 14:07 -

引用なし
パスワード
   日付検索についてご指導お願いいたします。
現在textbox48に2009/02/18と入力しCommandButton44_を押すことによって検索し該当するデータをlistboxに表示させています。構文は以下の通りです。
Private Sub CommandButton44_Click()
   
Dim myRow As Long
   With Application.WorksheetFunction
     If .CountIf(Worksheets("DATA").Range("A2:K2500"), Me.TextBox1.Text) > 0 Then
    
    
       With Worksheets("WAREA")
       Intersect(.UsedRange, .Columns("A:CD")).ClearContents
       End With
       Worksheets("DATA").Range("A1").AutoFilter _
         Field:=3, _
         Criteria1:=">=" & Me.TextBox48.Text, _
         Operator:=xlAnd, _
         Criteria2:="<=" & Me.TextBox48.Text
       Worksheets("DATA").Range("A1").CurrentRegion.Copy Destination:=Worksheets("WAREA").Range("A1")

       Worksheets("DATA").Range("A1").AutoFilter
     Else
       Exit Sub: Rem textbox1にリストに対する値がなかった場合の処理
     End If
   End With
  
  
With Worksheets("WAREA")
 IRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
End With

With ListBox1
.ColumnHeads = True
.ColumnCount = 11
.ColumnWidths = "30;80;55;60;60;60;65;45;45;45;25;"
.RowSource = "WAREA!A2:K2500"
End With
End Sub

となります。
ここで、質問は
1:2月のみのデータを検索する場合
  (2009/02で2月分のデータを検索し表示させる)
2:期間の指定
  (2009/02/01〜2009/02/18)の様に検索する方法

以上、2点ですが、よろしくお願いいたします。

【60400】Re:日付検索
発言  kanabun  - 09/2/18(水) 14:38 -

引用なし
パスワード
   ▼初心者 さん:

>質問は
>1:2月のみのデータを検索する場合
>  (2009/02で2月分のデータを検索し表示させる)
>2:期間の指定
>  (2009/02/01〜2009/02/18)の様に検索する方法

Criteria1 と Criteria2 に 条件に合った日付を代入すればよろしいのでは?

>       Worksheets("DATA").Range("A1").AutoFilter _
>         Field:=3, _
>         Criteria1:=">=" & Me.TextBox48.Text, _
>         Operator:=xlAnd, _
>         Criteria2:="<=" & Me.TextBox48.Text

【60401】Re:日付検索
質問  初心者  - 09/2/18(水) 16:32 -

引用なし
パスワード
   ▼kanabun さん:
ご指導ありがとうございます。
ちょっと分からない所があったので再度質問いたします。
1:2月のみのデータ抽出ですが
textbox48に2009/02*で検索かけて2月分のデータを抽出したいのですが
2:期間の指定ですが、新規にtextbox49と50を作成し、それぞれに
2009/02/01と2009/02/18と入力しその期間のデータを抽出したいのですが、
構文は以前、どこかのwebから参考にして作成しました。
今の構文に具体的に何処をどう変えるか分からないのでご指導お願いいたします。


>▼初心者 さん:
>
>>質問は
>>1:2月のみのデータを検索する場合
>>  (2009/02で2月分のデータを検索し表示させる)
>>2:期間の指定
>>  (2009/02/01〜2009/02/18)の様に検索する方法
>
>Criteria1 と Criteria2 に 条件に合った日付を代入すればよろしいのでは?
>
>>       Worksheets("DATA").Range("A1").AutoFilter _
>>         Field:=3, _
>>         Criteria1:=">=" & Me.TextBox48.Text, _
>>         Operator:=xlAnd, _
>>         Criteria2:="<=" & Me.TextBox48.Text

【60402】Re:日付検索
発言  kanabun  - 09/2/18(水) 17:24 -

引用なし
パスワード
   ▼初心者 さん:

難しく考えないで、始まりの日付と終わりの日付をTextBoxに入力
することにしたらどうですか?

>>1:2月のみのデータを検索する場合
>>  (2009/02で2月分のデータを検索し表示させる)
  TextBox48 に「2009/2/1」と入力
  TextBox49 に 「2009/2/28」と入力

>>2:期間の指定
>>  (2009/02/01〜2009/02/18)の様に検索する方法
  TextBox48 に「2009/2/1」と入力
  TextBox49 に 「2009/2/18」と入力

コードは
 Worksheets("DATA").Range("A1").currentregion.AutoFilter _
      Field:=3, _
      Criteria1:=">=" & TextBox48.Text, _
      Operator:=xlAnd, _
      Criteria2:="<=" & TextBox49.Text

>Me.TextBox48
この Me は同じUserForm内なので不要です。

【60414】Re:日付検索
質問  初心者  - 09/2/20(金) 13:51 -

引用なし
パスワード
   ▼kanabun さん:
ご指導ありがとうございます。
もう少し質問したいのですが、
>>1:2月のみのデータを検索する場合
>>  (2009/02で2月分のデータを検索し表示させる)
  TextBox48 に「2009/2/1」と入力
  TextBox49 に 「2009/2/28」と入力
と教えていただきましたが、ここでTextbox50を新たに追加して
ここに200/02で2月分のデータを検索する方法はありますでしょうか?
よろしくお願いいたします。


>▼初心者 さん:
>
>難しく考えないで、始まりの日付と終わりの日付をTextBoxに入力
>することにしたらどうですか?
>
>>>1:2月のみのデータを検索する場合
>>>  (2009/02で2月分のデータを検索し表示させる)
>  TextBox48 に「2009/2/1」と入力
>  TextBox49 に 「2009/2/28」と入力
>
>>>2:期間の指定
>>>  (2009/02/01〜2009/02/18)の様に検索する方法
>  TextBox48 に「2009/2/1」と入力
>  TextBox49 に 「2009/2/18」と入力
>
>コードは
> Worksheets("DATA").Range("A1").currentregion.AutoFilter _
>      Field:=3, _
>      Criteria1:=">=" & TextBox48.Text, _
>      Operator:=xlAnd, _
>      Criteria2:="<=" & TextBox49.Text
>
>>Me.TextBox48
>この Me は同じUserForm内なので不要です。

【60416】Re:日付検索
発言  Jaka  - 09/2/20(金) 16:56 -

引用なし
パスワード
   >ここに200/02で2月分のデータを検索する方法はありますでしょうか?
>よろしくお願いいたします。
日付の入ったセルには、何月とか何日、または曜日等の個別情報は持ってないので
作業列でも使って作業列で抽出してください。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=102;id=FAQ

Month、Day、aaa等で月、日、曜日が表示されるのは、
エクセルが、日付から計算してそう表示しているだけです。

日付の場合は、シリアル値 5000以上10000以下などを抽出しているようなものです。

と、私は解釈しています。
後は、詳しい方の返答を待ってください。

【60426】Re:日付検索
発言  kanabun  - 09/2/20(金) 20:53 -

引用なし
パスワード
   ▼初心者 さん:

>ここに200/02で2月分のデータを検索する方法はありますでしょうか?

UserFormに TextBox48と TextBox49 および CommandButtonを配置して、
以下の (1) または (2) の方式で TextBoxに入力し、
  (1)2009年2月分を抽出するばあい
   → TextBox48 に 「2009/2 」とタイプする

  (2)2009/1/15〜 2009/2/15 期間を抽出したいばあい
   → TextBox48 に 「2009/1/15 」
    TextBox48 に 「2009/2/15 」とタイプする

↓CommandButtonをクリックしてみてください。

Private Sub CommandButton1_Click()
 Dim n As Long
 Dim date1 As Date
 Dim date2 As Date
 
 If IsDate(TextBox48.Text) Then
   date1 = CDate(TextBox48.Text)
   n = UBound(Split(TextBox48.Text, "/")) ' / の数を調べる
   Select Case n
    Case 1
      date2 = DateAdd("m", 1, date1) - 1
    Case 2
      If IsDate(TextBox49.Text) Then
        date2 = CDate(TextBox49.Text)
      Else
        MsgBox "2つめのTextBoxの値が日付ではありません"
        Exit Sub
      End If
   End Select

   With Worksheets("DATA").Range("A1").CurrentRegion
     .AutoFilter
     .AutoFilter _
      Field:=3, _
      Criteria1:=">=" & date1, _
      Operator:=xlAnd, _
      Criteria2:="<=" & date2
   End With
   MsgBox "抽出しました"
 End If

End Sub

【60497】Re:日付検索
お礼  初心者  - 09/2/24(火) 13:51 -

引用なし
パスワード
   ▼kanabun さん:
遅くなりました。ご指導ありがとうございます。
文字検索について質問があるのですが、改めて質問いたします。
どうもありがとうございました。


>▼初心者 さん:
>
>>ここに200/02で2月分のデータを検索する方法はありますでしょうか?
>
>UserFormに TextBox48と TextBox49 および CommandButtonを配置して、
>以下の (1) または (2) の方式で TextBoxに入力し、
>  (1)2009年2月分を抽出するばあい
>   → TextBox48 に 「2009/2 」とタイプする
>
>  (2)2009/1/15〜 2009/2/15 期間を抽出したいばあい
>   → TextBox48 に 「2009/1/15 」
>    TextBox48 に 「2009/2/15 」とタイプする
>
>↓CommandButtonをクリックしてみてください。
>
>Private Sub CommandButton1_Click()
> Dim n As Long
> Dim date1 As Date
> Dim date2 As Date
> 
> If IsDate(TextBox48.Text) Then
>   date1 = CDate(TextBox48.Text)
>   n = UBound(Split(TextBox48.Text, "/")) ' / の数を調べる
>   Select Case n
>    Case 1
>      date2 = DateAdd("m", 1, date1) - 1
>    Case 2
>      If IsDate(TextBox49.Text) Then
>        date2 = CDate(TextBox49.Text)
>      Else
>        MsgBox "2つめのTextBoxの値が日付ではありません"
>        Exit Sub
>      End If
>   End Select
>
>   With Worksheets("DATA").Range("A1").CurrentRegion
>     .AutoFilter
>     .AutoFilter _
>      Field:=3, _
>      Criteria1:=">=" & date1, _
>      Operator:=xlAnd, _
>      Criteria2:="<=" & date2
>   End With
>   MsgBox "抽出しました"
> End If
>
>End Sub

3729 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free