【问题标题】:What's wrong with this code to switch vertical tabs?这段代码切换垂直标签有什么问题?
【发布时间】:2022-01-25 18:29:23
【问题描述】:

我在 VBA 中有这段代码,我只是按照关于代码相同代码的教程进行操作,但结果始终显示对象 '_Worksheet' 的方法 'Range' 失败" 请问这段代码有什么问题?

Sub SwitchVerticalTabs()
Dim SelCol As Long
Dim FristRow As Long
SelRow = Right(ActiveCell.Row, 1) - 25
With Sheet1
.Range("25:324").EntireRow.Hidden = True
FirstRow = 25 + ((SelRow - 1) * 20)
.Range(FirstRow & ":" & FirstRow + 19).EntireRow.Hidden = False
.Range("B3").Value = SelRow + FirstRow
End With
End Sub

【问题讨论】:

  • 你的目标是什么?解释上下文。 Selrow 将始终为负数,FIrstRow 也是如此。这就是您收到错误的原因。基本上,Rownum 不能为负数或 0。

标签: excel vba


【解决方案1】:

您还没有选择 ActiveCell:

 Range("A1").Select

你可以试试这个:

Sub SwitchVerticalTabs()
Dim SelCol As Long
Dim FristRow As Long
Sheets("Sheet1").Select '<-- Set sheet first
Range("A1").Select  '<-- and then select the ActiveCell
SelRow = Right(ActiveCell.Row, 1) - 25
With Sheet1
.Range("25:324").EntireRow.Hidden = True
FirstRow = 25 + ((SelRow - 1) * 20)
.Range(FirstRow & ":" & FirstRow + 19).EntireRow.Hidden = False
.Range("B3").Value = SelRow + FirstRow
End With
End Sub

Range 也是错误的:

.Range("25:324")

需要指定列字母,例如:

.Range("A25:Z324")

【讨论】:

  • 我整理了代码,仍然出现错误
  • @Amin Al-Hamoud 在代码模块的最顶部,确保输入Option Explicit,然后按Enter。更正声明 Dim *FristRow* As Long 中拼写错误的变量,因为它没有应用于您的实际变量 FirstRowOption Explicit 将帮助您避免此类问题。
猜你喜欢
  • 2015-04-25
  • 2018-09-09
相关资源
最近更新 更多