| 
    
     |  | おはようございます。 
 シートSheet3に
 以下の表があったとします。
 
 
 C   D    E    F    G    H
 5      あ    い    う    え    お
 6  イ   100   120    140   160   180
 7  ロ   110   140    160   180   200
 8  ハ   120   160    180   200   220
 9  ニ   130   180    200   220   240
 
 
 左端の数字が行番号、上端のアルファベットは列を表わします。
 
 これで表の要素の起点をセル$D$6
 列方向の要素数は 5
 行方向の要素数は 4
 
 と言うことにします。
 
 関係をよく把握してください。
 
 
 Userform1に配置するテキストボックスは、
 
 >  Textbox1----検索行の指定用
 上記の表で「ロ」の指定で7行目を検索対象にします
 でもこれは、Hirofumiさんの仕様のコンボボックスに賛成です。
 変更は、考えてみて下さい
 
 >  Textbox2----検索値指定用
 
 >  Textbox3----検索結果表示用
 
 textbox4----検索の結果みつかった列見出し
 (上記の「あ」とか「い」)を表示
 
 では、Userform1のモジュールです。
 '================================
 Dim 検索セル範囲 As String
 Dim 検索開始セル As String
 '****** ↓表の位置により以下の3つの値を変更します *******
 Const strng As String = "$d$6" '表の起点セル
 Const c_num As Long = 5 '表の列方向要素数
 Const r_num As Long = 4 '表の行方向の要素数
 '=======================================================================
 Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
 Dim 行見出し As Range
 Dim crow As Variant
 With Worksheets("sheet3") '対象シートにする
 Set 行見出し = .Range(strng).Offset(0, -1).Resize(r_num, 1)
 crow = Application.Match(TextBox1.Value, 行見出し, 0)
 If Not IsError(crow) Then
 検索セル範囲 = .Range(strng).Offset(crow - 1, 0).Resize(, c_num).Address
 検索開始セル = .Range(strng).Offset(crow - 1, 0).Address
 Else
 MsgBox "行指定エラー"
 Cancel = True
 End If
 End With
 End Sub
 '=======================================================================
 Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
 Dim 検索値 As String
 Dim col As Long
 With Worksheets("sheet3") '対象シートにする
 If Val(TextBox2.Value) > Application.Max(.Range(検索セル範囲)) Then
 MsgBox "検索値指定エラー"
 Cancel = True
 Else
 検索値 = TextBox2.Text
 col = .Evaluate("IF(ISERROR(MATCH(" & _
 検索値 & "," & 検索セル範囲 & ",1)),0," & _
 "IF(ISERROR(MATCH(" & 検索値 & "," & 検索セル範囲 & ",0))," & _
 "MATCH(" & 検索値 & "," & 検索セル範囲 & ",1)," & _
 "MATCH(" & 検索値 & "," & 検索セル範囲 & ",1)-1))")
 
 TextBox3.Text = .Evaluate("=OFFSET(" & 検索開始セル & ",0," & col & ",1,1)")
 TextBox4.Text = .Evaluate("=OFFSET(" & strng & ",-1," & col & ",1,1)")
 End If
 End With
 End Sub
 
 
 確認してください。
 
 |  |