我可以使用IsEmpty来引用不同的工作表并隐藏列吗?

时间:2017-09-28 15:44:48

标签: excel vba excel-vba excel-2010 is-empty

是否可以使用IsEmpty引用不同工作表上的单元格从哪里发射宏?此外,如果该查询的结果为True,是否可以隐藏查询列?

这是我迄今为止所建立的内容: 我的第一个版本看起来像这样:

If IsEmpty(Sheets("Results").Cells(10, 1).Value) Then
    Worksheets("Results").Columns(10).EntireColumn.Hidden = True
Else
    Worksheets("Results").Columns(10).EntireColumn.Hidden = False
End If

直截了当。但是,只有在我希望查询/隐藏发生的工作表中触发它时才有效。当我从不同的工作表中启动宏时,它会隐藏那个表中的列(当然,duh)。

所以,经过几次迭代和错误,我得到了这个:

IsEmpty

至少不会从VBA中抛出任何错误。它也总是蹲下。 :$我开始怀疑是否可以在另一张纸上使用EntireColumn.Hidden?还是 <!-- dynamic form --> <div ng-repeat="entry in form.items track by entry.id"> <!-- item type 0, text input --> <label ng-if="entry.itemtype === '0'" class="item item-input item-stacked-label" ng-class="{ 'has-error' : templateForm.{{entry.id}}.$invalid }"> <span class="input-label"><span ng-if="entry.mandatory === '1'">* </span>{{ entry.itemlabel }}</span> <input type="text" name="{{ entry.id}}" ng-model="entry.value" placeholder="{{ entry.itemlabel }}" required="entry.mandatory === '1'"> </label> 命令?另外,鉴于我需要在9列上运行此检查,或许还有比9 If / Then语句更好的方法吗?

2 个答案:

答案 0 :(得分:3)

我认为你非常接近,只是你让细胞输入方式错误:

If IsEmpty(Sheets("Results").Cells(1, 10).Value) Then
    Worksheets("Results").Columns(10).EntireColumn.Hidden = True
Else
    Worksheets("Results").Columns(10).EntireColumn.Hidden = False
End If

此外,如评论中所述,您可以创建一个循环来检查多列:

Dim i As Integer
Dim maxi As Integer
i = 1
maxi = 20

While i < maxi

If IsEmpty(ThisWorkbook.Worksheets("Results").Cells(1, i)) Then
    Worksheets("Results").Columns(i).EntireColumn.Hidden = True
Else
    Worksheets("Results").Columns(i).EntireColumn.Hidden = False
End If

i = i + 1
Wend

答案 1 :(得分:3)

要远离循环通过9列的第1行,请使用SpecialCells(xlCellTypeBlanks)。

dim blnks as range
with workSheets("Results")
    with .range(.cells(1, "B"), .cells(1, "K"))
        .entirecolumn.hidden = false
        set blnks = .specialcells(xlCellTypeBlanks)
        if not blnks is nothing then blnks.entirecolumn.hidden = true
    end with
end with

基本上,这将取消隐藏所有9列,然后在第一行中隐藏包含空白单元格的列。请注意,公式返回的零长度字符串(例如"")与真正空白的单元格不同。