[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで作成したリストBOXからのセル移動』(たけし)
マクロでユーザーフォームを作成しOR条件3つでシート2のセルをリストボックスに表示させその表示された12Xyzという記述されたリストをクリックするとシート2の12Xyxが入っているセルへセル選択できるようにしたいのですが おしえてください
< 使用 Excel:Excel2007、使用 OS:Windows7 >
クラス等を使って、配置したコントロールにイベントを割り付ける必要があると思います。 (カリーニン) 2014/11/10(月) 23:37
(たけし) 2014/11/11(火) 08:17
リストボックスに表示させるところまではできている前提で・・
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim fd_Cell Set fd_Cell = Sheets(2).Cells.Find(What:=ListBox1.Text, LookAt:=xlWhole) Sheets(2).Activate fd_Cell.Select End Sub
フォームのモジュールに入れてください。 エラー処理はしていません。
(ぽち) 2014/11/11(火) 09:24
??
コードでユーザーフォームとリストボックスを生成した、ということではないのですか? (カリーニン) 2014/11/11(火) 09:48
「初心者」と書かれていたので勝手に判断してしまいましたが、 違っていたら無視してください。 どこまでができていて、どこができないのか明確にしてもらえると ありがたいです。 (ぽち) 2014/11/11(火) 10:09
>マクロで作成したリストBOX >マクロでユーザーフォームを作成
この記述があったのでユーザーフォームやリストボックスをコードで生成したのか と思ったのですが違いますか?
↓のようなことをしていると思ったのですが。
[[20110825165308]] 『ユーザーフォームを標準モジュール内マクロで作成』(てんて)
(カリーニン) 2014/11/11(火) 22:28
カリーニンさんも言われていましたが、私にも勘違いがあるといけないので 少し整理させてください。
1.ユーザーフォームはコードで作られたものですか?VBEで「挿入」-「ユーザーフォーム」から作られたもの ですか?
2.「マクロでユーザーフォームを作成しOR条件3つでシート2のセルをリストボックスに表示させ・・」とあり ますがどこまでができていますか?出来ているところまでのコードを提示できますか?
ちなみに私のコードはユーザーフォーム上にリストボックスが1つ配置(Listbox1)されており、そこに表示 されているリストの1つをダブルクリックした時に動くイベントプロシージャとなります。 記述先はフォームのモジュールとなります。
(ぽち) 2014/11/13(木) 09:31
2.ネットの参考書で見つけて利用させていただいてますが
このコードでは表示までしかできません
'*****************************************************
'OR条件検索の処理
'*****************************************************
Private Sub cmdSerch_Click()
Dim Obj As Object Dim wAddST As Variant Dim wAddress As Variant Dim wName As Variant Dim i As Integer Dim wlstCount As Integer
With Worksheets("検索メニュー")
'リストボックスをクリア lstName.RowSource = "" lstName.Clear
'*** テキストボックス「キーワード?@」の値が含まれるセルを検索 ***
'テキストボックス未入力の場合処理しない If txbName1.Value <> "" Then
'キーワード1の値で検索 Set Obj = .Cells.Find( _ What:=txbName1.Value, _ LookIn:=xlValues, _ LookAt:=xlPart, _ MatchByte:=False)
'検索対象が存在する場合 If Not Obj Is Nothing Then '検索にヒットした先頭のセルのアドレスをセット wAddST = Obj.Address
'検索の繰り返し処理 Do '検索にヒットしたセルのアドレスをセット wAddress = Obj.Address
'検索にヒットしたセルの値を取得 wName = .Range(wAddress).Value
'リストボックスに追加 lstName.AddItem wName
'次の検索を行う Set Obj = .Cells.FindNext(Obj)
'最初にヒットしたアドレスと同じ場合は処理を終了 If Obj.Address = wAddST Then Exit Do Loop End If End If
'*** テキストボックス「キーワード?A」の値が含まれるセルを検索 ***
'テキストボックスの未入力または同じ値(含む)の場合処理しない If txbName2.Value <> "" And _ InStr(txbName1.Value, txbName2.Value) = 0 Then
'キーワード2の値で検索 Set Obj = .Cells.Find( _ What:=txbName2.Value, _ LookIn:=xlValues, _ LookAt:=xlPart, _ MatchByte:=False)
'検索対象が存在する場合 If Not Obj Is Nothing Then '検索にヒットした先頭のセルのアドレスをセット wAddST = Obj.Address
'検索の繰り返し処理 Do '検索にヒットしたセルのアドレスをセット wAddress = Obj.Address
'検索にヒットしたセルの値を取得 wName = .Range(wAddress).Value
'リストボックスの値を読み込みます wlstCount = 0 For i = 0 To Me.lstName.ListCount - 1 '既にリストボックスに追加されていないかチェック If Me.lstName.List(i, 0) = wName Then wlstCount = wlstCount + 1 End If Next i
'リストボックスに重複が無い場合、値を追加 If wlstCount = 0 Then lstName.AddItem wName
'次の検索を行う Set Obj = .Cells.FindNext(Obj)
'最初にヒットしたアドレスと同じ場合は処理を終了 If Obj.Address = wAddST Then Exit Do Loop End If End If
'*** テキストボックス「キーワード?B」の値が含まれるセルを検索 ***
'テキストボックスの未入力または同じ値(含む)の場合処理しない If txbName3.Value <> "" And _ InStr(txbName1.Value, txbName3.Value) = 0 And _ InStr(txbName2.Value, txbName3.Value) = 0 Then
'キーワード3の値で検索 Set Obj = .Cells.Find( _ What:=txbName3.Value, _ LookIn:=xlValues, _ LookAt:=xlPart, _ MatchByte:=False)
'検索対象が存在する場合 If Not Obj Is Nothing Then '検索にヒットした先頭のセルのアドレスをセット wAddST = Obj.Address
'検索の繰り返し処理 Do '検索にヒットしたセルのアドレスをセット wAddress = Obj.Address
'検索にヒットしたセルの値を取得 wName = .Range(wAddress).Value
'リストボックスの値を読み込みます wlstCount = 0 For i = 0 To Me.lstName.ListCount - 1 '既にリストボックスに追加されていないかチェック If Me.lstName.List(i, 0) = wName Then wlstCount = wlstCount + 1 End If Next i
'リストボックスに重複が無い場合、値を追加 If wlstCount = 0 Then lstName.AddItem wName
'次の検索を行う Set Obj = .Cells.FindNext(Obj)
'最初にヒットしたアドレスと同じ場合は処理を終了 If Obj.Address = wAddST Then Exit Do Loop End If End If
End With
End Sub
*シートにボタンをつけて呼び出ししています
(たけし) 2014/11/13(木) 10:32
2でご提示いただいたコードの下(End Subの下)に下記を追加してみてください。
Private Sub lstName_Click() Dim fd_Cell Set fd_Cell = Sheets("検索メニュー").Cells.Find(What:=lstName.Text, LookAt:=xlWhole) Sheets("検索メニュー").Activate fd_Cell.Select End Sub (ぽち) 2014/11/13(木) 10:47
ユーザーフォームを閉じればいいのでフォームのモジュールに「Unload」文を 入れたらいいかと思います。
(ぽち) 2014/11/13(木) 11:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.