使用 If 语句将行号设置为变量

问题描述 投票:0回答:1

潜伏已久,第一个问题!

我正在 Excel VBA 中工作,尝试将活动工作表中下一个空行的行号设置为变量,在用户窗体中的子程序中间。然后多次使用该变量从用户表单输入数据并进行格式化。

只要C9中有东西,下面的代码就可以工作:

Option Explicit
Private Sub InsertProcedure()
Dim rownum As Long
'beginning of sub that works fine

'Find row number of next empty row in table
    ActiveSheet.Range("C8").Select
    rownum = ActiveSheet.Range("C8").End(xlDown).Offset(1, 0).Row

'rest of sub that works fine using rownum as a variable
End Sub

但是,如果 C9 为空,因为代码正在插入第一项,则会抛出以下错误:“运行时错误‘1004’:应用程序定义或对象定义错误”。

对我来说,问题是 CTRL+向下箭头什么也没有。我尝试设置一个 if else 语句(如下)来检查 C9 是否为空,但这甚至无法从编译器中出来让我测试它是否有效。抛出的错误是“编译错误:预期:表达式”,这(我认为)意味着我的 if/then/else 格式有问题,但我无法弄清楚。

Option Explicit
Private Sub InsertProcedure()
Dim rownum As Long
'beginning of sub that works fine

'Find row number of next empty row in table
    ActiveSheet.Range("C8").Select
    'Check if cell C9 is blank
    rownum = if ActiveSheet.Range("C9")<>"", then 'if C9 is not blank
        ActiveSheet.Range("C8").End(xlDown).Offset(1, 0).Row
        Else 'if C9 is blank
        ActiveSheet.Range("C9").Row
    End If

'rest of sub that works fine using rownum as a variable
End Sub

我也尝试添加

set rownum = if...
但得到了相同的编译错误。

编辑添加:此子在多个工作表上将是相同的,因此我不是故意引用特定的工作表名称,而是仅引用表单初始化的活动工作表。

excel vba if-statement variable-assignment
1个回答
0
投票

发完这篇绝对捂脸。下面修复了它,我把 IF 放在了错误的位置。

'Find row number of next empty row in table
ActiveSheet.Range("C8").Select
If ActiveSheet.Range("C9") <> "" Then
    rownum = ActiveSheet.Range("C8").End(xlDown).Offset(1, 0).Row
    Else
    rownum = ActiveSheet.Range("C9").Row
End If
© www.soinside.com 2019 - 2024. All rights reserved.