VBA到CountBlank每列的前10行(1到50)

时间:2015-02-12 01:10:52

标签: excel vba excel-vba

我正在尝试使用以下代码。我想在每个工作表中计算第1列到第50列的空白单元格。以下工作,但它适用于整个列。如何将其更改为仅计算每列中的前10行,如果它们都是空白,则将列宽更改为1?

非常感谢

    For j = 1 To 50
        Blanks = WorksheetFunction.CountBlank(Worksheet.Columns(j))
        If Blanks > 10 Then
            ws.Columns(j).ColumnWidth = 1
        End If
    Next j

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

Dim i As Integer
Dim j As Integer
Dim k As Integer
For i = 1 To 50
    k=0
    For j = 1 to 10
        If Activesheet.Cells(j,i).Value = "" Then
            k=k+1
        End If
    Next j

    If k = 10 Then
        Activesheet.Columns(i).ColumnWidth = 1
    End If
Next i

如果有任何问题,请告诉我。

答案 1 :(得分:1)

如果您只想查看前10行,则需要在CountBlank函数中指定此行。您的CountBlank(Worksheet.Columns(j))正计算整个列。

此外,由于您只想计算If Blanks > 10 Then行,因此True永远不会评估为10。我已将该表达式更改为If Blanks = 10

Sub countTest()

    Dim wks As Worksheet

    Set wks = Worksheets("Sheet1")

    For j = 1 To 50
        Blanks = WorksheetFunction.CountBlank(wks.Range(Cells(1, j), Cells(10, j)))
        If Blanks = 10 Then
            wks.Columns(j).ColumnWidth = 1
        End If
    Next j

    Set wks = Nothing

End Sub