Excel VBA質問箱 IV

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

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


40791 / 76736 ←次へ | 前へ→

【41036】ユーザー定義関数内のFindについて
質問  ハチ  - 06/7/28(金) 9:58 -

引用なし
パスワード
   おはようございます。

「範囲内で、値がある左端のColumnを求める」関数を
作ろうとしていたのですが上手くいかず悩んでいます。

質問1
下記のコードになるのですが、
test1とtest2の結果が違うのはなぜなのでしょうか?
test1のように"3"が入ることを期待しているのですが、
関数内のFind結果FiがNothingとなり"999"が入ってしまいます。
Function FindA_Col(ByVal 範囲 As Range) As Integer
とやってみたのですが上手くいきませんでした。

質問2
FindA_ColでFindの結果がNothingだった場合、
"999"ではなく「エラー値」を返したいと思っているのですが
記述の仕方がわかりません。
エラーとしては"#N/A"が適当ですか?

よろしくお願いします。

Option Explicit

'test1
Sub Find_test1()

Dim 範囲 As Range
Dim Fi As Range
Dim i As Integer

With ActiveSheet
  .Range("C1").Value = "aaa"
  Set 範囲 = .Range("A1:D1")
End With

Set Fi = 範囲.Find("*", , xlValues, , , xlNext)
If Not Fi Is Nothing Then
  i = Fi.Column
Else
  i = 999
End If

ActiveSheet.Range("A2").Value = i

Set Fi = Nothing
Set 範囲 = Nothing

End Sub

'Test2
Sub Find_test2()

With ActiveSheet
  .Range("C1").Value = "aaa"
  .Range("A2").Formula = "=FindA_Col(A1:D1)"
End With

End Sub


Function FindA_Col(範囲 As Range) As Integer

Dim Fi As Range
Dim i As Integer

Set Fi = 範囲.Find("*", , xlValues, , , xlNext)
If Not Fi Is Nothing Then
  i = Fi.Column
Else
  i = 999
End If

FindA_Col = i
Set Fi = Nothing

End Function

0 hits

【41036】ユーザー定義関数内のFindについて ハチ 06/7/28(金) 9:58 質問
【41039】Re:ユーザー定義関数内のFindについて Jaka 06/7/28(金) 11:07 発言
【41042】Re:ユーザー定義関数内のFindについて ハチ 06/7/28(金) 11:40 お礼
【41044】Re:ユーザー定義関数内のFindについて ichinose 06/7/28(金) 11:47 発言
【41047】おまけ Jaka 06/7/28(金) 12:18 発言
【41050】Re:おまけ ハチ 06/7/28(金) 12:59 お礼
【41055】Re:おまけ Jaka 06/7/28(金) 13:31 発言
【41056】Re:おまけのおまけ ichinose 06/7/28(金) 13:38 発言
【41088】Re:おまけのお礼 ハチ 06/7/28(金) 20:31 お礼

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