Excel VBA質問箱 IV

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

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


5107 / 13644 ツリー ←次へ | 前へ→

【52583】WorksheetFunctionクラスのMatchプロパティを取得できません?? ぱんだ 07/11/20(火) 15:24 質問[未読]
【52586】Re:WorksheetFunctionクラスのMatchプロパ... Jaka 07/11/20(火) 15:55 発言[未読]
【52587】Re:WorksheetFunctionクラスのMatchプロパ... ぱんだ 07/11/20(火) 15:58 お礼[未読]
【52588】Re:WorksheetFunctionクラスのMatchプロパ... Jaka 07/11/20(火) 16:54 発言[未読]
【52590】Re:WorksheetFunctionクラスのMatchプロパ... ぱんだ 07/11/20(火) 17:05 お礼[未読]

【52583】WorksheetFunctionクラスのMatchプロパテ...
質問  ぱんだ  - 07/11/20(火) 15:24 -

引用なし
パスワード
   ユーザーフォームに必要なデータを入れ,そこから検索するプログラムを作っているのですが,どうしても一箇所だけエラーが出てしまいます。
そこを飛ばすようにすると動くのでそこが悪いのだとは思うのですが,何所が間違っているか分かりません。
ご教授をお願いします.

Private Sub CommandButton1_click()
  
  Dim tannro As Integer
  Dim place As Integer
  Dim tran As Integer
  Dim i As Integer
    
  i = 1
  
  Do
    place = Cells(7, 3) + 8
    tran = Cells(7, 14) + 8
    tanro = UserForm4.Controls("TextBox" & i)
⇒ここ  trang = Application.WorksheetFunction.Match(tanro, Range(Cells(1, 24), Cells(tran, 24)), 0)

____以下省略_____

【52586】Re:WorksheetFunctionクラスのMatchプロ...
発言  Jaka  - 07/11/20(火) 15:55 -

引用なし
パスワード
   ▼これ以外と多いですね。
WorksheetFunctionを使うと、関数がエラーになった場合(#N/A)エラー値を返せずにそのまま実行エラーになります。

こんな感じでエラートラップするか。

On Error Resume Next
trang = Application.WorksheetFunction.Match(・・・・
If Err = False Then
  MsgBox "OK"
End If
Err.Clear
On Error GoTo 0


EXL97以前の書き方をするか。(私はこちら)
trangの型は、エラー値が返る事があるから、Variant型

Dim trang As Variant
trang = Application.Match(・・・
If Not IsError(trang) Then
  MsgBox "OK"
Else
  MsgBox "ERR"
End If

【52587】Re:WorksheetFunctionクラスのMatchプロ...
お礼  ぱんだ  - 07/11/20(火) 15:58 -

引用なし
パスワード
   Jaka さんありがとうございます。
エラー値がでてしまっているんですね!

エラートラップをしてみたのですが・・・やはりそれしか方法がないのでしょうか?
どうしてもその値が欲しいので...

自分でシートを確認したところ,検索値が検索範囲にあるので,なぜエラーが出てしまっているのか
分かりません↓↓

でもきっと,どこかがおかしいからエラー値が出てしまっているんですよね・・・
しらみつぶしに何所がおかしいか探してみます!!
ここが動かないとどうしようもないので.

この部分の書き方が間違っているわけじゃないと分かって突破口が見えました.
ありがとうございました.

【52588】Re:WorksheetFunctionクラスのMatchプロ...
発言  Jaka  - 07/11/20(火) 16:54 -

引用なし
パスワード
   Dim tannro As Integer
   ↑
  数値型ですが、

tanro = UserForm4.Controls("TextBox" & i)
 ↑
変数宣言されて無いので、Variant型です。
で、テキストボックスの値は基本的に文字列です。
セルの値が数値の場合、このままだとMatch関数で引っかかりません。

変数名の書き間違いなのでは...。

【52590】Re:WorksheetFunctionクラスのMatchプロ...
お礼  ぱんだ  - 07/11/20(火) 17:05 -

引用なし
パスワード
   Jakaさん

変数の型の問題だったんですね!
型はよく分からないまま自己流で使っていたので盲点でした・・・

いろいろ調べて書き直してみます.
ありがとうございます.

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