[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートフィルタに値を渡したい』(九州の関西人)
はじめまして<br>
オートフィルタは、リストから選んで、またはオプションで表示される子画面で入力して<br>
得たい情報を抽出しますが、自分で作った子画面(テキストボックス1個とボタンだけ)<br>
に抽出したい文字列を入力させて、それをオートフィルタに渡し、あとはオートフィルタに<br>
任せて実行させると言うことがしたいのですが、画面(Userform1)の作成と<br>
オートフィルタを出すところはわかったのですが、どうやって画面を表示させ入力された<br>
文字列をオートフィルタに渡せばいいのかがわかりません。<br>
現在以下のように作って停まっています。どうかご教授ください。<br><br>
Sub marklot()
'
' marklot Macro
' マクロ記録日 : 2005/2/2
'
' Keyboard Shortcut: Ctrl+m
'
Dim str As String
' ここで自分で作った画面を表示して文字を入力してもらいたい
Selection.AutoFilter
ActiveWindow.LargeScroll ToRight:=-2
' 入力してもらった文字列を変数strに入れて渡す
Selection.AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
Selection.AutoFilter
End Sub
使用環境:Excel2000/Win2000SP4
>自分で作った子画面 ユーザーフォーム?
Private Sub CommandButton1_Click()
Dim str As String
str = TextBox1.text
Range("A:D").AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
End Sub
(INA)
衝突しました。
インプットボックスはどうですか?
Option Explicit
Sub marklot()
'
' marklot Macro
' マクロ記録日 : 2005/2/2
'
' Keyboard Shortcut: Ctrl+m
'
Dim MyStr As String
' ここで自分で作った画面を表示して文字を入力してもらいたい
MyStr = Application.InputBox("検索文字を入力してください。。。", Type:=2)
Selection.AutoFilter
ActiveWindow.LargeScroll ToRight:=-2
' 入力してもらった文字列を変数strに入れて渡す
Selection.AutoFilter Field:=1, Criteria1:=MyStr, Operator:=xlAnd
Selection.AutoFilter
End Sub
(SoulMan)
SoulMan様
上記で悩んでいたところへ書き込みくださり助かりました。
子画面なんて何でも良いんです。これで充分です。
早速試してみました。
まだ改良の余地はありますが、文字を入力させてオートフィルタに値を渡し
実行することはできるようになりました。
あとは初期処理として(すべて)をはさんで連続操作ができるようにすることと
いま表示結果がおかしいので調整が必要ですが、今、以下のプログラムで
基本動作はしています。ここまで来たらあとはがんばってみます。
本当にありがとうございました。
ここ、レスポンスはやいでんなぁ、大助かりやわぁ
また、わからへんことあったらお願いします、どうもおおきに!!
Option Explicit
Sub Macro8()
'
' Macro8 Macro
' マクロ記録日 : 2005/2/2 '
'
Dim str As String
str = Application.InputBox("検索文字を入力してください。。。", Type:=2)
ActiveCell.Offset(-7, -4).Range("A1:CG1").Select
Selection.AutoFilter
ActiveWindow.LargeScroll ToRight:=-2
Selection.AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
End Sub
Dim str As String
' 入力画面の表示
str = Application.InputBox("MarkLot(下4桁)を入力してください", Type:=2)
ActiveWindow.LargeScroll ToRight:=-2
' オートフィルタ設定
Range("B4:CH4").Select
Selection.AutoFilter
' オートフィルタで抽出
Selection.AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
' すべて表示を指示されたらオートフィルタ解除
If str = "*" Then Selection.AutoFilter
End Sub
AutoFilterMode=False ですね。。 (SoulMan)
' 初期処理(すべて表示にして解除しておく)
Range("B4:CH4").Select
Selection.AutoFilter Field:=1
Selection.AutoFilter
こんなことしておりました。(爆笑)
早速AutoFilterMode=Falseにしてやってみます。
Soulman様、本当に助かります。ありがとうございました。
ありゃま、すみません。
こんな感じでしょうか??不親切でちょっと反省m(__)m
Option Explicit
Sub てすと()
With Worksheets("Sheet1")
If .AutoFilterMode Then
.AutoFilterMode = False
Else
.Range("A1").AutoFilter
End If
End With
End Sub
(SoulMan)
乗りかっかた船なんで、とりあえず私なら、、ですが、
Option Explicit
Sub Macro8()
' ' Macro8 Macro ' マクロ記録日 : 2005/2/2 ' '
Dim MyStr As Variant
' オートフィルタ設定
With Worksheets("Sheet1")
.AutoFilterMode = False
' 入力画面の表示
MyStr = Application.InputBox("MarkLot(下4桁)を入力してください", Type:=2)
If TypeName(MyStr) = "Boolean" Then
Exit Sub
Else
If MyStr = "" Then
MsgBox "検索値が入力されていません。"
Exit Sub
Else
ActiveWindow.LargeScroll ToRight:=-2
' オートフィルタで抽出
.Range("B4:CH4").AutoFilter Field:=1, Criteria1:=MyStr, Operator:=xlAnd
' すべて表示を指示されたらオートフィルタ解除
If MyStr = "*" Then .AutoFilterMode = False
End If
End If
End With
End Sub
署名わすれ、
(SoulMan)
お礼の意味も込めて、とりあえずできあがったコーディングを公開致します。
もし同じようなことで困っておられる方の参考になれば幸いです
Option Explicit
Sub Macro8()
'
' Macro8 Macro
' マクロ記録日 : 2005/2/3
'
'
Dim str As String ' 入力されるLotを格納
Dim msg As String ' 入力画面の表示メッセージ
'
With Worksheets("Lepton")
' 表示メッセージの定義
msg = "Lepton MarkLot(下4桁)を入力してください。 すべて表示に戻す場合は「キャンセル」ボタンを押して下さい。"
'
' 初期処理(もしONならばオートフィルタ解除しカーソルを初期位置にセット)
If .AutoFilterMode Then .AutoFilterMode = False
Range("A1").Select
'
' 入力画面の表示
str = Application.InputBox(msg, Type:=2)
'
' **入力情報のチェック**
' キャンセルされた時はそのまま終了させる
If str = "False" Then Exit Sub
'
' 未入力の場合
If str = "" Then
MsgBox "検索する値が入力されていません。もう一度やり直してください。"
Exit Sub
End If
'
' 半角チェック
If str <> StrConv(str, vbNarrow) Then
MsgBox "全角は入力できません。もう一度やり直してください。"
Exit Sub
End If
'
' 半角4桁ではない入力の場合
If Len(str) <> 4 Then
MsgBox "半角4桁で入力してください。もう一度やり直してください。"
Exit Sub
End If
'
' 所定位置にオートフィルタ設定
Range("B4:CH4").Select
Selection.AutoFilter
'
' オートフィルタで抽出、表示
ActiveWindow.LargeScroll ToRight:=-2
Selection.AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
'
End With
End Sub
再入力させた方が親切でしょうね、でもこれで充分です。 シートにボタンも作り、ボタン押下で起動できるようにしました。
InputBoxではなくTextboxを使えば、半角4桁(アルファベット?数字?)の 入力制限を掛けることができるので、 判定してエラーメッセージを表示するような手間は掛かりませんよ。
(INA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.