是否可以使用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语句更好的方法吗?
答案 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列,然后在第一行中隐藏包含空白单元格的列。请注意,公式返回的零长度字符串(例如""
)与真正空白的单元格不同。