0

1) FOR ループに問題があります。私は無限に行きます。そして、これは私があなたの助けを求める最初の問題です。
2) 2 つ目の問題は、"If" に複数の条件を追加する方法がわからないことです。
私の質問はコメントとしてコードに含まれています。

Sub Repurchase_upload()

Dim Worksheet As Worksheets
startrow = Worksheets("GUTS").Cells(10, 1) 'Here I denote 1
endrow = Worksheets("GUTS").Cells(11, 1) 'Here I denote 1000
For x = startrow To endrow

            If Cells(x, "A").Value <> "DU" Then 'I would like it to look like that: 'If Cells(x, "A").Value <> "DU" or "DR" or "EK" Then' but I don't know how to do this 'or'
            Cells(x, "A").EntireRow.ClearContents
            End If 'And here it won't end...
    Next
End Sub
4

2 に答える 2

2

複数の値のテストを行う別の方法は、次に示すように select ステートメントを使用することです。

Sub Repurchase_upload()

    Dim Worksheet As Worksheets
    startrow = Worksheets("GUTS").Cells(10, 1) 'Here I denote 1
    endrow = Worksheets("GUTS").Cells(11, 1) 'Here I denote 1000
    For x = startrow To endrow
        Select Case Cells(x, "A").Value
        Case "DU", "DR", "EK"
          'Do nothing
        Case Else
            Cells(x, "A").EntireRow.ClearContents
        End Select
    Next
End Sub
于 2013-07-30T09:32:10.653 に答える
1

複数の条件は簡単に実装できます。

For x = startrow To endrow
    If Cells(x, "A").Value <> "DU" Or Cells(x, "A").Value <> "DR" Or Cells(x, "A").Value <> "EK" Then 
        Cells(x, "A").EntireRow.ClearContents
    End If
Next x

私が知らない無限ループについては、私には問題ないようです...単に遅すぎませんか?
おそらくClearContents、千回呼び出す前に画面の更新を無効にする必要があります。

Sub Repurchase_upload()

    Application.ScreenUpdating = False 'Disable screen updating

    Dim Worksheet As Worksheets
    startrow = Worksheets("GUTS").Cells(10, 1) 'Here I denote 1
    endrow = Worksheets("GUTS").Cells(11, 1) 'Here I denote 1000
    For x = startrow To endrow
        If Cells(x, "A").Value <> "DU" Or Cells(x, "A").Value <> "DR" Or Cells(x, "A").Value <> "EK" Then 
            Cells(x, "A").EntireRow.ClearContents
        End If
    Next x

    Application.ScreenUpdating = True  'Re-enable screen updating

End Sub
于 2013-07-30T09:29:49.977 に答える