各行をスキャンして特定のセルを取り出し、変数として格納したいとします。私が行の最後に着くと、一連の数式とvlookupを実行したいと思います。私は式とvlookupsをすべてセットアップしましたが、私は各行をスキャンし、それらの式の結果を取り、別のセルに戻す必要があります。ここにコード例があります行をループしてセルの値を変数として格納し、別のセルに結果を返します。
Dim height As Double
Dim weight As Double
Dim gender As String
Dim newWeight as Double
'I'd like to set the loop here
'for each row do this
height = d2.value
weight = f2.value
gender = k2.value
'then run through my equations
If gender = "F" and weight < 20 Then
newWeight = weight + 5
ElseIf gender = "F" and weight > 20 Then
newWeight = weight -2
End If
l2.value = newWeight.value
'Then clear variables and run through the new row
私の方程式はそれより少し複雑ですが、私はそれを開始すると思います。
**編集:私が使用しているシートを参照する必要がありますか?私は
あなたのコードでは、 'd2'は"セルD2 "を意味するものではなく、' d2'という変数(おそらくオブジェクト)を意味します。 'Range(" D2 ")'や 'Cells(2、" D ")'に変更したいと思うかもしれません。 'Cells'という方法を使うと' For'ループ(例えば 'For rowNum = 2 To 20')やループ内で' Cells(rowNum、 "D") 'を使うのは簡単でしょう。 – YowE3K
この情報をお寄せいただきありがとうございます。私のVBA経験はフォームのみであり、ワークシートで直接作業していません – mcadamsjustin
デフォルトでは、 'ActiveSheet'はすべての範囲とセルオブジェクトが参照しているシートとして使用されます。したがって、シートがアクティブなときにコードが実行されている間は、エラーが発生してはなりません。しかし、マクロが実行されたときにこのシートがアクティブにならない可能性がある場合は、 'Range ...'ビットを 'Worksheets(" Sheet1 ")に変更してください。Range ...'(明らかに、 ) – YowE3K