excel - Excel VBA 中对象“_Worksheet”的方法“范围”失败?
问题描述
好吧,让我先说我是这方面的菜鸟。我正在关注这个分步视频,但我仍然找到了一种方法来搞砸它。我已经尝试阅读相关问题,但我对 VBA 的了解并不多,无法理解答案。
基本上,我正在尝试(但失败)创建一个“员工经理”。在视频的 9 点 44 分左右,解说员说我们需要创建一个宏来隐藏和显示特定的单元格,具体取决于我们单击的选项卡。
这是我的 Sheet1 代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E4:H4")) Is Nothing Then
Range("B2").Value = Target.Column
Range("F2").Select
SwitchHTabs
End If
End Sub
我在模块下有这段代码,宏名为 SwitchHTabs:
Option Explicit
Sub SwitchHTabs()
Dim SelCol As Long
Dim FirstRow As Long
SelCol = ActiveCell.Column
With Sheet1
.Range("5:84").EntireRow.Hidden = True
FirstRow = 5 + ((SelCol - 5) * 20)
.Range(FirstRow & "." & FirstRow + 19).EntireRow.Hidden = False 'This is the line with the error
End With
End Sub
当我尝试运行代码时会弹出此错误:
当我单击 Debug 时,它会突出显示这行代码:
我哪里搞砸了?我正在使用 Excel 2016。
解决方案
比较Range
该子中的两行:
.Range("5:84").EntireRow.Hidden = True 'Works
.Range(FirstRow & "." & FirstRow + 19).EntireRow.Hidden = False 'Doesn't Work
为了论证起见,我们假设它FirstRow
是 1,然后处理第二行代码:
.Range("5:84").EntireRow.Hidden = True 'Works
.Range("1.20").EntireRow.Hidden = False 'Doesn't Work
希望现在更容易看到您使用句号代替冒号。
(顺便说一句-您可以改用它.Rows("5:84").Hidden
来消除对 的需要.EntireRow
)
推荐阅读
- php - 一次执行多个记录提交它应该在 Codeigniter2.2.6 中插入时生成 HTML 表单中的序列号
- firebase - 检索已经离线缓存的文档是否会被视为已读?
- java - 将 hive collect_set 查询迁移到 apache crunch
- php - 重定向到 Codeigniter 中的另一个控制器后会话数据丢失
- docker - 在 .net 核心应用程序中获取 Docker 容器 IP
- yii2 - 对用户密码散列 Yii2 使用不同的盐
- sql - TSQL 函数 新列的两个子字符串
- c# - 如何将 DataTable 移动到另一个 DataSet?
- typescript - ng2-file-upload 响应范围
- javascript - 在内部渲染多个反应组件
- 带按钮 onclick