日付で検索をかけられるようにしたく、マクロなどを作成したのですが、ヘルプを見てもよく分かりませんでした。テキストボックスに入力された日付を検索条件にするには、どのようにすればよいか教えて頂きたいのですがよろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Filterプロパティで何とかなるとは思うのですが...


ソースのサンプルでも出していただけないでしょうか?

一応
me.filter = "[フィールド名] = '" & [コントロール].text & "'"
てなかんじにしてるのでしょうか?
    • good
    • 0
この回答へのお礼

お礼を申し上げるのが遅くなりまして申し訳ありません。
回答を頂きありがとうございました。
時間をかけて手直しをしていたらなんとか起動してくれるようになりました。

お礼日時:2002/02/09 13:09

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

このQ&Aと関連する良く見られている質問

Qマクロでの検索とリストボックスについての質問

マクロのついて質問です。

年賀状の台帳に検索機能を作成しています。
検索元データの表は以下の項目になっています。

企業名 氏名 部署名 役職 郵便番号 住所 名刺所有者
AAA 山田 営業部 部長 111-11111 ○○○ ○○

ユーザーフォームを使用して検索機能を付けています。

Textbox1、Textbox2、TextBox3 の3つから複数検索
検索結果はリストボックスに出力
リストボックスの行を選択すると、その元データの行が選択される

そこで2点質問です。

①複数検索をするとき
同じセル内での複数検索になってしまいます。
そうではなくて、同じ行の中で複数セルの検索をかけたいのです。
例えば、Textbox1に企業名、Textbox2に氏名を入力して検索し、一致した場合
その行を返すという具合に。

②リストボックスの表示が、検索した文字を含んだセルとその隣が表示されるようになって
 いますが、それを企業名と氏名が表示されるようにしたいです。

初心者なので、質問もこれで伝わるのか不安ですが、
コードを添付しますので、どなたかご教授くださいますようお願いします。

(長いので、宣言は割愛しました)

Private Sub cmdSerch_Click()

'検索対象が存在する場合
If Not Obj Is Nothing Then
'検索にヒットした先頭のセルのアドレスをセット
wAddST = Obj.Address

'検索の繰り返し処理
Do
'検索にヒットしたセルのアドレスをセット
wAddress = Obj.Address

'検索にヒットしたセルの値を取得
wName = .Range(wAddress).Value

'検索条件:キーワード1のみの場合
If txbName2.Value = "" And txbName3.Value = "" Then
'リストボックスに追加
lstName.AddItem wName
lstName.List(lstName.ListCount - 1, 1) = .Range(wAddress).Offset(, 1).Value
End If

'検索条件:キーワード1、2の場合

If txbName2.Value <> "" And txbName3.Value = "" Then
'検索した値にキーワード2の値が含まれているか判定
If InStr(wName, txbName2.Value) <> 0 Then
'リストボックスに追加
lstName.AddItem wName
lstName.List(lstName.ListCount - 1, 1) = .Range(wAddress).Offset(, 1).Value
End If
End If

'検索条件:キーワード1、2、3の場合
If txbName2.Value <> "" And txbName3.Value <> "" Then
'検索した値にキーワード2、3の値が含まれているか判定
If InStr(wName, txbName2.Value) <> 0 And _
InStr(wName, txbName3.Value) <> 0 Then
'リストボックスに追加
lstName.AddItem wName
lstName.List(lstName.ListCount - 1, 1) = .Range(wAddress).Offset(, 1).Value
End If
End If

'次の検索を行う
Set Obj = .Cells.FindNext(Obj)

'最初にヒットしたアドレスと同じ場合は処理を終了
If Obj.Address = wAddST Then Exit Do
Loop
End If

End With

End Sub
Private Sub lstName_Click()
Dim fd_Cell
Set fd_Cell = Sheets("年賀状").Cells.Find(What:=lstName.Text, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False)
Sheets("年賀状").Activate
fd_Cell.Select
Dim r As Range
Set r = ActiveCell.EntireRow
r.Select
End Sub

マクロのついて質問です。

年賀状の台帳に検索機能を作成しています。
検索元データの表は以下の項目になっています。

企業名 氏名 部署名 役職 郵便番号 住所 名刺所有者
AAA 山田 営業部 部長 111-11111 ○○○ ○○

ユーザーフォームを使用して検索機能を付けています。

Textbox1、Textbox2、TextBox3 の3つから複数検索
検索結果はリストボックスに出力
リストボックスの行を選択すると、その元データの行が選択される

そこで2点質問です。

①複数検索をするとき
同じセル内での複数検索に...続きを読む

Aベストアンサー

こんにちは。

コードを見ると、初心者とも言えず、ベテランとも言えず、たぶん、何かお考えがあってのことでしょうけれども、私には、読み取れませんでした。先頭の部分の削除してしまうと、訳のわからない内容になってしまうようです。

オブジェクト名を変えてしまっていますが、ListBox であるはずなのに、なぜか「lstName_Click」が出てくるのとか、意味が分からないです。ListBox をクリックして、検索するのですか?できないとは言いませんが、リストは結果を出すものではありませんか?

>Private Sub cmdSerch_Click()
いくら宣言が長いといっても、With ------のオブジェクト名まで取り去ったら、分からないです。たぶん、With Worksheets("年賀状")があったはずだと思います。

凝った内容のものを公開する場合は、それぞれのオブジェクトなどは分かるようにするか、デフォルトの名称のままにしてほしいです。

一応、私自身で、現行のものとは違うサンプルを作ってみました。以前、複合検索で、私がここのカテゴリで紹介した内容と、今回が違うのは、絞り込めない可能性もあるからです。なお、オブジェクト名は標準にさせてもらいます。

'//
'Option Explicit

Dim clDat As Collection
Dim myLists() As Variant
Private Sub CommandButton1_Click()
 Dim r As Range
 Dim i As Long
 Erase myLists '配列の初期化
 Set clDat = New Collection 'コレクションの初期化
 If TextBox1.Text = "" And TextBox2.Text = "" Then _
  MsgBox "TextBoxには何も入力されていません。", 48: Exit Sub
 
 Call TxtSearch(TextBox1.Text, TextBox2.Text) 'サブプロシージャへ
 
 If clDat.Count > 0 Then
  ReDim Preserve myLists(clDat.Count - 1, 2) 'Collectionの初期値は1だから
  For i = 0 To clDat.Count - 1
   Set r = clDat(i + 1)
   myLists(i, 0) = r.Value
   myLists(i, 1) = r.Offset(, 1).Value
   myLists(i, 2) = r.Offset(, 2).Value
  Next
 ElseIf clDat.Count = 1 Then
  Set r = clDat(1)
  myLists(0, 0) = r.Value
  myLists(0, 1) = r.Offset(, 1).Value
  myLists(0, 2) = r.Offset(, 2).Value
 End If
 If Sgn(myLists) <> 0 Then
  Me.ListBox1.List = myLists
 Else
  Me.ListBox1.Clear
 End If
End Sub

Sub TxtSearch(tx1 As Variant, tx2 As Variant)
 Dim c As Range
 Dim target As Variant
 Dim idx As Integer
 Dim FirstAddr As String
 Dim i As Long, j As Integer
 Dim r As Range
 If tx1 = "" Then
  target = tx2: idx = 2
 Else
  target = tx1: idx = 1
 End If
 
 With Worksheets("年賀状")
  Set c = .Columns(idx).Find( _
  What:=target, _
  LookIn:=xlValues, _
  LookAt:=xlPart, _
  MatchByte:=False)
  If Not c Is Nothing Then
   FirstAddr = c.Address
   i = 1
   clDat.Add c.Offset(0, 1 - idx), "i" & i 'セルを格納
   Do
    Set c = .Columns(idx).FindNext(c)
    If c.Address = FirstAddr Then Exit Do
    i = i + 1
    clDat.Add c.Offset(0, 1 - idx), "i" & i
   Loop Until c Is Nothing
   '絞込検索
   If clDat.Count > 1 Then
    If tx1 <> "" And tx2 <> "" Then
     For i = clDat.Count To 1 Step -1
      Set r = clDat(i)
      If InStr(1, r.Offset(0, idx).Value, tx2, 1) = 0 Then '会社名優先
       clDat.Remove "i" & i
      End If
     Next i
    End If
   End If
  Else
   MsgBox "お調べの情報は見当たりません。", 48
  End If
 End With
End Sub

Private Sub UserForm_Initialize()
 Worksheets("年賀状").Select '不要かもしれません。
 Me.ListBox1.ColumnCount = 3 'プロパティで設定したほうがよい。
End Sub
'//

こんにちは。

コードを見ると、初心者とも言えず、ベテランとも言えず、たぶん、何かお考えがあってのことでしょうけれども、私には、読み取れませんでした。先頭の部分の削除してしまうと、訳のわからない内容になってしまうようです。

オブジェクト名を変えてしまっていますが、ListBox であるはずなのに、なぜか「lstName_Click」が出てくるのとか、意味が分からないです。ListBox をクリックして、検索するのですか?できないとは言いませんが、リストは結果を出すものではありませんか?

>Private S...続きを読む

QWord2000でテキストボックス内のテキストの・・・

・・・縦方向中央揃えはできますか??

Aベストアンサー

テキストボックス中のテキストの文字列は、
横方向は真ん中にそろえられますが、
縦方向はそろえられないと思います。
改行で文字列を真ん中に持って行ったり、
テキストボックスの高さを調整して真ん中に来るようにします。

もうひとつ方法として
オートシェイプの四角を作り、別の場所にテキストボックスを作成し 、
その中に文字を入力し、テキストボックスを線なし、塗りつぶしなしにし、
ドラッグして四角の中に移動させます。
一手間かかりますが、これが一番きれいで確実に希望の場所(真ん中等)に
テキストを配置できます。

Qテキストボックスのデフォルト設定とコンボボックスの更新について

テキストボックスのデフォルト設定とコンボボックスの更新について

エクセルのVBAで、ユーザーフォームを使用しています。
ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。

コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。

ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示
されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。
(1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。

コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。
「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。
「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。)
というのは、次のVBAで上手くいきました。
If Combobox1.ListIndex < Combobox1.ListCount - 1 Then
Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1)
Else
Combobox1.Text = Combobox1.List(0)
End If

(2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。
「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。
「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。)
といった内容のマクロがうまく組めません。

教えていただけると助かります。

テキストボックスのデフォルト設定とコンボボックスの更新について

エクセルのVBAで、ユーザーフォームを使用しています。
ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。

コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。

ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示
されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。
(1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教え...続きを読む

Aベストアンサー

回答1、myRangeです。

>ちなみに、このVBAはどうやって覚えましたか?
>あるいは、本などで調べられるものでしょうか。

ふつうComboBoxは質問のような使い方をしないので、
本にはそのものずばりというコードは載ってないでしょう。

VBAのヘルプをじっくり眺めて、プロパティ、メソッドなどの機能を
いくつも試してみながらひとつひとつ理解していけば
時間は掛かるでしょうがどんなコードでも書けるようになります。
 
因みに、ひと月である程度のコードが書けるようになるには
以下のような手段で、日に4~5時間程度勉強をすればいいでしょう。

  VBA専用サイト
  VBA専用Q&A
  VBAのヘルプ
  参考書(入門編、応用編、各1~2冊)

あとは、粘りと根性!!
以上です。

QWordで置換する場合に、テキストボックスのあるときの検索順

Word2000です。

Wordの文章の最初のページにはテキストボックスがあります。
(最初のページというのは深い意味はありません。)

テキストボックスの中にも文が入っています。

テキストボックス内も地の文(テキストボックスに入っていない通常の文)も
ある文字列(例えば「あいうえお」)を別の文字列(「かきくけこ」)に置き換えたいのです。

編集-置換 の機能を使えばよいのですが、
その際、「すべて置換」を使わずにひとつひとつ確かめながら置換しようとすると、
まず地の文を検索していき、最後のページに達してから、
最初のページに戻って、そのテキストボックスの中を検索していきます。

できれば、
検索の順番を、テキストボックスの中の検索を最後にするのではなくて、
上から順番にしていってほしい
(最初のページのテキストボックスの中の検索は、次のページの地の文の検索よりも先にしてほしい)
のですが、そういうわけにはいかないのでしょうか。

Aベストアンサー

いろいろ方法を考えてみたのですが、なかなかいい考えが出ませんでした。
テキストボックスの中の文にはスタイル設定されてないんですよね? もしスタイル設定していれば、そのスタイルの中でだけ検索できると思うのですが・・・。いまさらスタイル設定するのも面倒だと思うので、これからはそのようにしておけば検索の際便利ということだけですが。。。

Qオートシェイプ・テキストボックスにテキストが入らなくなってしまいました。

Wordで広報紙を作成中、オートシェイプにテキストの追加をしようとしたところ、パソコンがフリーズしてしまい強制終了となりました。
何度やっても同じなので、テキストボックスにしようと思いましたが、十字のカーソルは出るのですがドラッグしても形にならず、同じようにフリーズしてしまいます。
別に立ち上げた新規作成の画面では、問題なくどちらも出来ます。
もう少しで仕上がるところなのに困りました。
どうぞよろしくお願いいたします。

Aベストアンサー

こんばんは。

はっきりと断言できませんが、Wordの全画面をCtr+A で、Copy を取って、新規作成画面に貼り付けてみたらいかがでしょうか?

もし、それでダメだったら、オートシェイプだけを除いて、コピー&ペーストします。

その理由は、これは、Excelの話なのですが、この前、私が発見したのは、バイナリのファイルの中に、例えば、ログインしたときの文字など、まったく関係のないデータが、まるで異次元の世界に紛れ込んだように、混入していました。Wordも同じだとはいえませんが、地雷のように、そこに触れて、Wordがフリーズするのではないか、と思います。うまくいくかは分かりませんが、試してみる価値はあると思います。


このカテゴリの人気Q&Aランキング

おすすめ情報