このコードでは、2つのRangeオブジェクトを.OffSet(1、0).Activateを使ってインクリメントしようとしています。Rangeオブジェクトをループでインクリメントする方法
Function Foundry_check_func(target_cell As Range, result_cell As Range)
For x = 1 To 20
If result_cell <= 5 Then
target_cell = "Value 1"
ElseIf result_cell >= 10 Then
target_cell = "Value 2"
Else: target_cell = "Value 3"
End If
With target_cell
.Interior.Color = RGB(0, 255, 0)
End With
target_cell.Offset(3, 0).Activate
result_cell.Offset(4, 0).Activate
Debug.Print ("Value: " & result_cell & " Loop: " & x)
Next x
' Don't forget to format target cell at end of loop
End Function
Sub Foundry_check()
Main = Foundry_check_func(Range("J22"), Range("K22"))
End Sub
しかし、私はDebug.Printを使用して、各ループの後に読み込まれるセルは変更されないことがわかります。出力は次のとおりです。
範囲の代わりにActiveCellを使用して同様のマクロ作業を行いました。しかし、このプログラムでは、2セットのセルをOffSetする必要があります。 1つはデータ(result_cell)を読み込み、もう1つはそのデータ(target_cell)に基づいて値を書き込む。私はどのように私は同じループ内の2つの異なる細胞をオフセットするためにActiveCellを使用することができるか分からない。
ご協力いただければ幸いです。ここで
あなたは 'どちらかの必要はありません。オフセット*または* '法「ivate」。単に 'Cells'コレクションを直接使用してください。これはまさに何をするはずですか? 3と4のオフセットは、ループが長くなるほど2つの範囲の間隔を広げます。 – Comintern
セルをアクティブにするのではなく、 'set targetcell = targetcell.offset(3,0)'と 'set resultcell = resultcell.offset(4,0)'を試してください。あなたの現在のコードはセルをアクティブにしますが、それについてはそれがあります。ターゲットと結果のセルが変更されない – NickSlash
これが成功した 'for'ループであるためには、実際に何かを更新するためにイテレータ(' x')を使うか、ループ内で徐々に変更して更新する必要があります。どちらも存在しない。それをした@NickSlash。 – AER