2017-03-22 19 views
0

を使用してヘッダー情報を取得するときに私はLMSの滝からの試験ヘッダ情報を引き出すために、コードに次を使用しています:型の不一致VBA

Dim usr_attr As LMSTestLabAutomation.AttributeMap 
Dim num_usr_att As Integer 
Dim user_data_array() As String 
Dim user_label_array() As String 

Set usr_attr = my_db.GetProperties("") 
num_usr_att = usr_attr.Count 
ReDim user_label_array(num_usr_att - 1) 
ReDim user_data_array(num_usr_att - 1) 

I = 0 
For I = 0 To num_usr_att - 1 
    user_label_array(I) = usr_attr.KeyNames.Item(I) 
    user_data_array(I) = usr_attr.Item(I) 
Next I 

'Enter the data into the report 
wb.Sheets("Multi-cut Report").Select ' Switch to the Report Page 
Set mcwb = wb.ActiveSheet 

wb.ActiveSheet.Range("C5") = user_data_array(Application.Match("UA::Test request number:", user_label_array, False) - 1) 
wb.ActiveSheet.Range("C6") = user_data_array(Application.Match("UA::Test Start Date", user_label_array, False) - 1) 
wb.ActiveSheet.Range("C7") = user_data_array(Application.Match("UA::Test By", user_label_array, False) - 1) 
wb.ActiveSheet.Range("C8") = user_data_array(Application.Match("UA::Test Location", user_label_array, False) - 1) '<<<< function fails here <<<< 

コードの最後の行は私に型の不一致を示します。しかし、コードに変更を加える前に(このコードブロックは含まれていませんでした)、型の不一致が発生せず、ヘッダーの値が返されます。このコードがコメントアウトされると、スクリプトはそれ以外の場合とまったく同じように実行されます。

+1

何かをする前に、あなたは 'num_usr_att'の使用を再考する必要があります。 'usr_attr.Count = 0'の場合、ReDimに負の数でエラーを試みます。また、イミディエイトウィンドウで試してみてください: '?Application.Match(" UA :: Test Location "、user_label_array、False)' '0 'を返すかどうか確認し、見つかった場合はnoneを見つけて負の配列にアクセスしようとしていますindex - 確実に失敗します。 – PatricK

+0

イミディエイトウィンドウを指摘してくれたPatricKに感謝し、その機能が存在することを知らなかった!私は答えを見つけたので、正しい結果を得るために、文字列リテラル "UA :: Test Location *"にワイルドカードを使用する必要がありました。助けてくれてありがとう。 – charwayne

答えて

0

次のコードは、コードの欠陥のある行の文字列がワイルドカードを使用する場合に実行されます。

wb.ActiveSheet.Range("C8") = user_data_array(Application.Match("UA::Test Location*", user_label_array, False) - 1) 

私はいくつかの点で、ヘッダファイルは、なぜそれ故、非印字文字が付加されていたことを信じています直接のマッチはうまくいかないでしょう。彼の助言のためにPatricKに感謝します。