0

アップデート:

よし、次のコードを使用して、必要なことを実行します。つまり、値が 0 かどうかを確認し、0 の場合は行全体を削除します。ただし、一度に1つのワークブック内の複数のワークシートに対してこれを実行したいと考えています。次のコードが行っていることは、VBA スクリプトを使用して Excel を開いたときにデフォルトでアクティブになっている現在のスプレッドシートからのみゼロを削除することです。ここで作業ゼロ除去コード:

Dim wsDCCTabA As Excel.Worksheet
Dim wsTempGtoS As Excel.Worksheet

Set wsDCCTabA = wbDCC.Worksheets("Login")
Set wsTempGtoS = wbCalc.Worksheets("All_TemporaryDifferences")

Dim LastRow As Long, n As Long
LastRow = wsTempGtoS.Range("E65536").End(xlUp).Row
For n = LastRow To 1 Step -1
If Cells(n, 5).Value = 0 Then
    Cells(n, 5).EntireRow.Delete
End If
Next

私は何を間違っていますか?同じワークブック内の別のワークシートに対して同じことをしても、何もしません。次のコードを使用して、別のワークシートからゼロを削除しています。

Set wsPermGtoS = wbCalc.Worksheets("All_PermanentDifferences")
'delete rows with 0 description  
Dim LastRow As Long, n As Long
LastRow = wsPermGtoS.Range("E65536").End(xlUp).Row
For n = LastRow To 1 Step -1
If Cells(n, 5).Value = 0 Then
    Cells(n, 5).EntireRow.Delete
End If
Next

何かご意見は?または同じことを行う別の方法は?

元の質問:

特定の列にゼロがあるすべての行を削除したい。次のコードを使用していますが、何も起こらないようです。

 CurrRow = (Range("E65536").End(xlUp).Row)
 For Count = StartRow To CurrRow
     If wsDCCTabA.Range("E" & Count).Value = "0" Then
         wsDCCTabA.Rows(Count).Delete
     End If
 Next

StartRow開始行 CurrRowの値を含む 最後に使用された行の行の値を含む

4

4 に答える 4

1

これが役立つかどうかを確認してください:

Sub DelSomeRows()

    Dim colNo As Long:      colNo = 5             ' hardcoded to look in col 5
    Dim ws    As Worksheet: Set ws = ActiveSheet  ' on the active sheet

    Dim rgCol As Range
    Set rgCol = ws.Columns(colNo)                          ' full col range (huge)
    Set rgCol = Application.Intersect(ws.UsedRange, rgCol) ' shrink to nec size
    Dim rgZeroCells As Range ' range to hold all the "0" cells (union of disjoint cells)
    Dim rgCell      As Range ' single cell to iterate
    For Each rgCell In rgCol.Cells
        If Not IsError(rgCell) Then
            If rgCell.Value = "0" Then
                If rgZeroCells Is Nothing Then
                    Set rgZeroCells = rgCell ' found 1st one, assign
                Else
                    Set rgZeroCells = Union(rgZeroCells, rgCell) ' found another, append
                End If
            End If
        End If
    Next rgCell
    If Not rgZeroCells Is Nothing Then
        rgZeroCells.EntireRow.Delete ' deletes all the target rows at once
    End If
End Sub
于 2012-04-17T18:05:52.093 に答える
0

行を削除したら、「Count」変数を差し引く必要があります

CurrRow = (Range("E65536").End(xlUp).Row)
For Count = StartRow To CurrRow
    If wsDCCTabA.Range("E" & Count).Value = "0" Then
        wsDCCTabA.Rows(Count).Delete
        ' Add this line:
        Count = Count - 1
    End If
Next
于 2012-04-18T06:00:54.303 に答える
0

わかった。将来の参考のために、私は使用しました

ActiveWorkbook.Sheets("All_temporaryDifferences").Activate 

ActiveWorkbook.Sheets("All_Permanentdifferences").Activate
于 2012-04-18T21:54:37.007 に答える