2016-06-01 15 views
0

メインサブルーチンでは、2つのユーザー入力((1)範囲アドレス(A1:C50など)、(2)名前文字列(例えばJames))を呼び出し、関数サブルーチン(引数を引数として渡す)を呼び出し、その名前がその範囲に存在するか存在しないかをメッセージボックスを通して出力する。VBA:次のように関数と呼び出しサブを両方書く必要があります

検索範囲と名前の両方をユーザーから入力する必要があります。関数subRoutineと呼び出し側のサブを書くにはどうしたらいいですか?これはこれまで私が持っていたものです。

Function NameExists(name As String, area As Range) As Boolean 



If name = area.Value Then 
    NameExists = True 

Else 
    NameExists = False 

End If 


End Function 



Sub Main() 
Dim NameExists As Boolean 
Dim name As String 

name = InputBox("Enter a Name") 
area = InputBox("Enter a Range") 


If NameExists = True Then 
MsgBox name & " Has Been Found" 
Else 
MsgBox name & " Has Not Been Found" 
End If 


End Sub 

答えて

0

実際に関数が存在するかどうかをチェックし、ユーザーが入力した変数を渡す必要があります。ここには少し粗い例があります:

Sub Main() 

    Dim nm As String 
    Dim ar As String 

    nm = InputBox("Enter a Name") 
    ar = InputBox("Enter a Range") 

    If NameExists(nm, ar) = True Then 

     MsgBox nm & " Has Been Found" 

    Else 

     MsgBox nm & " Has Not Been Found" 

    End If 

    End Sub 

    Private Function NameExists(name As String, area As String) As Boolean 

    Dim myRange As Range 
    Set myRange = Range(area) 

    For Each myCell In myRange 

     If myCell.Value = name Then 

      NameExists = True 

      Exit For 

     End If 

    Next 

    Set myRange = Nothing 

    End Function 
+0

ありがとうございます!それを入力するのではなく、範囲を選択させる方法はありますか?私はこのコードが似ていることを知っています: エリア= Application.InputBox(プロンプト:= _ "範囲を選択してください"、_ タイトル:= "InputBoxメソッド"、タイプ:= 8) しかし、関数? – th65

+0

それをしたいのであれば、おそらく2番目のテキストボックスの使用を忘れてしまいます。代わりに、マクロを作成し、InputBoxをポップアップして検索する名前を取得するボタンをツールバーに割り当ててから、選択したRangeを取得し、両方の関数をコード内の関数に渡します。こうすると、ユーザーは範囲をハイライト表示してからボタンをクリックします。それは私が思うようにそれをする良い方法だろう。 –

関連する問題