Excel VBA質問箱 IV

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

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


53306 / 76732 ←次へ | 前へ→

【28242】Re:match関数について
発言  ichinose  - 05/9/1(木) 7:20 -

引用なし
パスワード
   おはようございます。
Hirofumiさんとはだいぶ方法が違いますが、
私は前回の数式をVBAコード内でも生かしました。


>ご丁寧に有難うございます。正常に動作いたしました。
>もし、下記のように探索範囲が複数行の表となった場合で
>   A  B  C  D  E・・・
>1  100  120  140  160  180
>2  130  160  190  210  240
>3  150  190  230  270  310
>・
>・
>・
このシートをアクティブな状態にして下さい。


>
>その行がtextbox等で1行目とか3行目とか指定された場合に、その指定された配列から同じように探索するには、”探索範囲の先頭セル”下記の部分を変更すればいいのでしょうか?

ユーザーフォーム(Userform1)には

  Textbox1----検索行の指定用--1と指定すると1行目を
         検索対象とします

  Textbox2----検索値指定用

  Textbox3----検索結果表示用

とすると、

標準モジュールに
'=================================================
Sub main()
  UserForm1.Show
End Sub


userform1のモジュールに
'================================================
Dim 検索セル範囲 As String
Dim 検索開始セル As String
'=======================================================================
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  Dim crow As Long
   If IsNumeric(TextBox1.Text) Then
     crow = Val(TextBox1.Text)
     If crow > 0 Then
      With ActiveSheet
        検索セル範囲 = .Range(.Cells(crow, 1), .Cells(crow, .Columns.Count).End(xlToLeft)).Address
        検索開始セル = .Cells(crow, 1).Address
        End With
     Else
      MsgBox "検索行指定エラー"
      Cancel = True
      
      End If
   Else
     MsgBox "検索行指定エラー"
     Cancel = True
     End If
End Sub
'====================================================================
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  Dim 検索値 As String
  With ActiveSheet
    If Val(TextBox2.Value) > Application.Max(.Range(検索セル範囲)) Then
     MsgBox "検索値指定エラー"
     Cancel = True
    Else
     検索値 = TextBox2.Text
     TextBox3.Text = .Evaluate("=OFFSET(" & 検索開始セル & ",0,IF(ISERROR(MATCH(" & _
                  検索値 & "," & 検索セル範囲 & ",1)),0," & _
                  "IF(ISERROR(MATCH(" & 検索値 & "," & 検索セル範囲 & ",0))," & _
                  "MATCH(" & 検索値 & "," & 検索セル範囲 & ",1)," & _
                  "MATCH(" & 検索値 & "," & 検索セル範囲 & ",1)-1)),1,1)")
     End If
    End With

End Sub


対象シートをアクティブにした状態で
mainを実行してみて下さい。

0 hits

【28222】match関数について KIKAKU 05/8/31(水) 15:44 質問
【28226】Re:match関数について ichinose 05/8/31(水) 16:42 発言
【28227】Re:match関数について KIKAKU 05/8/31(水) 17:33 お礼
【28233】Re:match関数について Hirofumi 05/8/31(水) 21:12 回答
【28238】Re:match関数について KIKAKU 05/9/1(木) 0:03 質問
【28242】Re:match関数について ichinose 05/9/1(木) 7:20 発言
【28273】Re:match関数について Hirofumi 05/9/1(木) 20:46 回答
【28275】Re:match関数について Hirofumi 05/9/1(木) 21:46 発言
【28305】Re:match関数について KIKAKU 05/9/2(金) 12:53 質問
【28311】Re:match関数について ichinose 05/9/2(金) 13:21 発言
【28340】Re:match関数について KIKAKU 05/9/2(金) 18:50 質問
【28354】Re:match関数について ichinose 05/9/3(土) 8:53 発言
【28365】Re:match関数について KIKAKU 05/9/3(土) 22:06 お礼
【28349】Re:match関数について Hirofumi 05/9/2(金) 22:21 回答

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