我发现在线代码作为一个例子,我已调整显示或隐藏特定行,具体取决于我在Excel文件的下拉列表中选择的选项。
无论我尝试什么,宏都无法正常工作。
我的代码如下(还附有问题2(2a - 2d)中未显示/隐藏的行的截图)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$13" Then
If Range("F13").Value = "Yes" Then
Rows("14:17").EntireRow.Hidden = False
End If
If Range("F13").Value = "No" Then
Rows("14:17").EntireRow.Hidden = True
End If
If Range("F13").Value = " " Then
Rows("14:17").EntireRow.Hidden = True
End If
End Sub
答案 0 :(得分:1)
这是正确使用您的代码帮助您确定问题的一个很好的示例。你错过了一个结束IF语句。试试这个:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$13" Then
If Range("F13").Value = "Yes" Then
Rows("14:17").EntireRow.Hidden = False
End If
If Range("F13").Value = "No" Then
Rows("14:17").EntireRow.Hidden = True
End If
If Range("F13").Value = " " Then
Rows("14:17").EntireRow.Hidden = True
End If
End If
End Sub
您可能还想使用:
If Range("F13").Value = ""
而不是
If Range("F13").Value = " "
答案 1 :(得分:0)
缺少End If
。我假设需要测试目标单元格(F13)的值是否值。如果值是"是",它应该取消隐藏第14:17行,如果它是" " (空格键)它应该隐藏它们,如果它是"否"也应该隐藏它们。其他值不会影响行的隐藏/取消隐藏。
在End If
之前应该有第二个End Sub
,以便上面的所有if语句都包含在地址检查中。
另请注意,此代码应放在工作表中,因为您要挂钩Worksheet_Change
事件。
在工作表模块中尝试:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$13" Then 'Check if the changed value is indeed in F13
If Target.Value = "Yes" Then
ActiveSheet.Rows("14:17").EntireRow.Hidden = False 'Show the rows if the value is Yes
ElseIf Target.Value = "No" Then
ActiveSheet.Rows("14:17").EntireRow.Hidden = True 'Hide them when it's No
ElseIf Target.Value = " " Then
ActiveSheet.Rows("14:17").EntireRow.Hidden = True 'Or space
End If
End If
End Sub
其他评论:
ActiveSheet
(Me
代替Me.Rows...
而不是Me
。在这种情况下,他们可能也会这样做。但是,如果您从另一个工作表更改工作表上的值(例如重新计算的公式),configureStates.$inject = ['$stateProvider'];
export default function configureStates($stateProvider) {
getStates().forEach(state => $stateProvider.state(state.name, state.config));
}
function getStates() {
return [
{
name: 'contracts',
config: {
url: '/contracts',
template: require('./contracts.html'),
controller: 'ContractsController',
controllerAs: 'vm',
title: 'CONTRACTS',
settings: {
nav: 2,
content: '<i class="fa fa-dashboard"></i> CONTRACTS'
},
resolve: {}
}
}
];
}
将引用触发事件的已更改工作表,而activeworksheet将影响当前活动的工作表。