2017-11-16 3 views
0

ユーザーからの入力を取得しようとしています。Excelの列で入力値を検索し、一致する値の右側にあるセルの値を返します。AutoHotkey Excelの型が一致しません

これは私が思いついたものです。 %index%を数値で置き換えている限り、Excelファイルから値を返します。

私が受け取るエラーは、私が%インデックス%

value := workbook.Sheets("Sheet1").Cells(%index%, 1).Value 

で任意のアイデアを使用する「タイプの不一致は、」型の不一致を修正する方法がある私に指示?

#a:: 
workbook := ComObjGet("somepath\tester.xlsx") 

InputBox, OutputVar, Question 1, What are you looking for? 
if (OutputVar) 
    MsgBox, Let me do this for you. 
    intent = OutputVar 

index = 1 
value = "" 

Loop { 
    index := %index% + 1 
    value := workbook.Sheets("Sheet1").Cells(%index%, 1).Value 
} 
Until %intent% = %value% 

SendInput, workbook.Sheets("Sheet1").Cells(%index%, 2).Value 

Return 
+0

私はいくつかのコメントを持って中に見つからない場合

  • あなたのループが終了したことがない式として評価されます。 Excel内でルックアップを行い、隣接するセルの値を取得できることはご存じですか? Excelの外にあるときに、Excelの列をAHK配列に読み込んでローカルでルックアップを実行するのはいかがですか? –

  • 答えて

    2

    式で使用index、ない%index%、。

    #a:: 
        workbook := ComObjGet("somepath\tester.xlsx") 
        MAX_ROWS := 10 
    
        InputBox intent, Question 1, What are you looking for? 
    
        if (ErrorLevel == 0 && intent) { 
        Loop %MAX_ROWS% { 
         if (intent == workbook.Sheets("Sheet1").Cells(A_Index, 1).Value) { 
         SendInput % workbook.Sheets("Sheet1").Cells(A_Index, 2).Value 
         return 
         } 
        } 
        MsgBox 48, Not Found, "%intent%" not found in column a 
        } 
        return 
    

    注:コマンドがとるときは、置換を使用することはできません

    • また、あなたがここにあなたの修正されたコードだループ

      の内側に内蔵されたA_INDEX変数を使用することができます式

    • ErrorLevel == 0はOKを押したことを意味します。 InputBox
    • SendInput %を参照してください。expression modeを参照してください。 「%」以下のすべてがintentは、スプレッドシート
    関連する問題