2016-11-28 3 views
0

ワークシート2次の図に示すように、マクロのテーブル値は、主に列F(最大注入濃度)と列B(操作)に実行します。Worksheet 1基本的には、列Fの0の値に対応する参照操作を見つける。条件に基づいてVBA内の値を一致させる

これは列Fを実行し、0の値を見つけると、一致する操作を返します。テーブルの最後までこれを行います。私は1A - 0、2B - 0と4C - 0を持っている場合、マクロが0値を見つける最初の操作を常に選択します。ピクチャでは、マクロは最初の操作である値1を返す必要があります。

私は次のコードを書いて、ランタイムエラー '91'を返します。オブジェクト変数またはWithブロック変数が設定されていません。

Dim sh1 As Worksheet 
Dim StartCellCin As Range 
Dim StartCellO As Range 
Dim startRow As String 
Dim multiplication As Integer 
Dim countRows As Integer 
Dim lastRow As Long 
Dim operation As Long 

Set StartCellCin = sh1.Range("F13") 
Set StartCellO = sh1.Range("B13") 
startRow = StartCellCin.Row 
multiplication = sh1.Range("D4").Value2 * sh1.Range("D6").Value2 
countRows = multiplication - 1 
lastRow = startRow + countRows 

Do While startRow < lastRow 
If StartCellCin.Value = 0 Then 
    operation = Application.WorksheetFunction.Index(sh1.Range("B13"), Application.WorksheetFunction.Match(0, sh1.Range("startRow:lastRow"),0),1) 
    startRow = startRow + 1 
Else 
    startRow = startRow + 1 
    If StartCellCin.Offset(startRow).Value = 0 Then 
    operation = Application.WorksheetFunction.Index(sh1.Range("B13").Offset(startRow), Application.WorksheetFunction.Match(0,sh1.Range("startRow:lastRow"),0),1) 
    startRow = startRow + 1 
    End If 
End If 
Loop 

Option Explicitを実行すると、構文エラーは返されません。誰でも私を助けることができますか?

ありがとうございました!

+1

ここで、あなたは 'sh1'を設定していますか? 'Set sh1 = Worksheets(" Sheets1 ")'、 'Dim startRow as String'のように? **文字列**! ????後で行をループするときには、整数でなければなりません。 –

+0

sh1を設定するのではなく、Sheets(1)としか参照できません。 Ops、あなたはstartRowで正しいです。私はそれを修正します – vbalearner

答えて

0

私が間違っていない場合は、もう1行だけ必要です。ワークシートオブジェクトを使用する前にシートを設定する必要があります。しかし、あなたの質問に答えるためには、ここの最初の行を見てください:

Set sh1 = Sheets("Your Sheet's Name") 
    Set StartCellCin = sh1.Range("F13") 
    Set StartCellO = sh1.Range("B13") 
    '... 
関連する問題