あなたのコードにはかなりの数の異常があるようです。以下で少しリファクタリングします
Dim wsS As Worksheet
Dim wsU As Worksheet
Dim i As Integer
Set wsS = Sheets("sheet1") 'this has assigned the worksheet sheet1 to wsS
Set wsU = Sheets("non_confid") 'this has assigned the worksheet sheet1 to wsU
col1 = "A"
col2 = "E"
For i = 505 To 700
If Not IsEmpty(wsS.Range(col1 & i).Value) Then
wsU.Range(col2 & i - 503).Value = wsS.Range(col1 & i).Value
End If
Next
これはコードと同様に動作しますが、正しくコピーする必要があります。あなたの質問から、単に空の値をスキップしたいのか、それとも実行を停止したいのかわかりません。範囲内の空の値をスキップするには、次のバージョンのコードが機能します。
Dim wsS As Worksheet
Dim wsU As Worksheet
Dim i As Integer
Dim j As Integer
Set wsS = Sheets("sheet1") 'this has assigned the worksheet sheet1 to wsS
Set wsU = Sheets("non_confid") 'this has assigned the worksheet sheet1 to wsU
col1 = "A"
col2 = "E"
j = 2
For i = 505 To 700
If Not IsEmpty(wsS.Range(col1 & i).Value) Then
wsU.Range(col2 & j).Value = wsS.Range(col1 & i).Value
j = j + 1 'here is a new counter for the position on the second page.
End If
Next
空のセルが見つかったときにループを停止する場合は、次のコードが機能するはずです。
Dim wsS As Worksheet
Dim wsU As Worksheet
Dim i As Integer
Dim j As Integer
Set wsS = Sheets("sheet1") 'this has assigned the worksheet sheet1 to wsS
Set wsU = Sheets("non_confid") 'this has assigned the worksheet sheet1 to wsU
col1 = "A"
col2 = "E"
j = 2
For i = 505 To 700
If IsEmpty(wsS.Range(col1 & i).Value) Then
Exit For 'this jumps out of the loop, so no more copying.
Else
wsU.Range(col2 & j).Value = wsS.Range(col1 & i).Value
j = j + 1
End If
Next