|
おはようございます。
「範囲内で、値がある左端の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
|
|