私は VBA とコーディング全般についてまったくの初心者ですが、同じワークブックのセルからデータを取得 (フレームワーク パスを取得...) し、アプリケーション (QTP) を起動してテストを実行しようとしています。
Excel セルに入力された値を取得しようとすると、次のエラーが発生します。
Run Time Error '424' object required
基本的なルールがいくつか抜けていると思いますが、ご協力いただければ幸いです。問題となっているコード部分を下記に示します。
Option Explicit
Private Sub RunTest_Click()
Dim envFrmwrkPath As Range
Dim ApplicationName As Range
Dim TestIterationName As Range
'Dim wb As Workbook
'Dim Batch1 As Worksheets
Dim objEnvVarXML, objfso, app As Object
Dim i, Msgarea
Set envFrmwrkPath = ActiveSheet.Range("D6").Value ' error displayed here
Set ApplicationName = ActiveSheet.Range("D4").Value
Set TestIterationName = ActiveSheet.Range("D8").Value
ベストアンサー1
最初のコード行は、Option Explicit
(簡単に言えば)すべての変数が明示的に宣言されたbyDim
ステートメント。オブジェクト、整数、文字列、バリアントなど、任意の型にすることができます。
この行: は、型のDim envFrmwrkPath As Range
変数を宣言しています。つまり、範囲にのみ設定できます。envFrmwrkPath
Range
この行: は、セル内の特定の値に型変数Set envFrmwrkPath = ActiveSheet.Range("D6").Value
を設定しようとしています。これは、たとえば整数または文字列 (そのセルに何があるかによって異なります) である可能性がありますが、範囲ではありません。Range
D6
値を変数に格納したいと仮定します。次のように試してください。
Dim MyVariableName As Integer
MyVariableName = ActiveSheet.Range("D6").Value
これは、セル D6 に数字 (5 など) があることを前提としています。これで、変数に値が設定されます。
学習を簡単にするために、このOption Explicit
行を削除するかコメントアウトすると、VBA は実行時に変数の型を判別しようとします。
コードのこの部分を理解するにはこれを試してください
Dim envFrmwrkPath As String
Dim ApplicationName As String
Dim TestIterationName As String