Vba 有没有更简单的方法可以重复在列表底部插入行?

Vba 有没有更简单的方法可以重复在列表底部插入行?,vba,excel,if-statement,insert,Vba,Excel,If Statement,Insert,我试图通过单击按钮(Excel VBA)将一行添加到列表底部。这是最简单的方法吗?如果是,则此代码不工作,在选择“B37”后停止。任何建议都会有帮助。谢谢 主题1:xxxxx——主题1:xxxxx——主题1:xxxxx 主题2:xxxxx——主题2:xxxxx——主题2:xxxxx 主题3:xxxxx至主题3:xxxxx至主题3:xxxxx 主题4:xxxxx--xxxxx--xxxxx 受试者5:xxxxx--受试者4:xxxxx--xxxxx 受试者5:xxxxx——受试者4:xxxxx 受

我试图通过单击按钮(Excel VBA)将一行添加到列表底部。这是最简单的方法吗?如果是,则此代码不工作,在选择“B37”后停止。任何建议都会有帮助。谢谢

主题1:xxxxx——主题1:xxxxx——主题1:xxxxx
主题2:xxxxx——主题2:xxxxx——主题2:xxxxx
主题3:xxxxx至主题3:xxxxx至主题3:xxxxx
主题4:xxxxx--xxxxx--xxxxx
受试者5:xxxxx--受试者4:xxxxx--xxxxx
受试者5:xxxxx——受试者4:xxxxx
受试者5:xxxxx
Sub-referenceDocadditon()
'
'ReferenceDocadditon宏
'
'
'
范围(“B37”)。选择
如果ActiveCell=“”,则
范围(“B38”)。选择
如果ActiveCell=“”,则
范围(“B39”)。选择
如果ActiveCell=“”,则
范围(“B40”)。选择
如果ActiveCell=“”,则
范围(“B41”)。选择
如果ActiveCell=“”,则
范围(“B42”)。选择
如果ActiveCell=“”,则
范围(“B43”)。选择
如果ActiveCell=“”,则
范围(“B44”)。选择
如果ActiveCell=“”,则
范围(“B45”)。选择
如果ActiveCell=“”,则
范围(“B46”)。选择
如果ActiveCell=“”,则
ElseIf ActiveCell“”则
行(“45:45”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B44”)。选择
ElseIf ActiveCell“”则
行(“44:44”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B43”)。选择
ElseIf ActiveCell“”则
行(“43:43”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B42”)。选择
ElseIf ActiveCell“”则
行(“42:42”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B41”)。选择
ElseIf ActiveCell“”则
行(“41:41”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B40”)。选择
ElseIf ActiveCell“”则
行(“40:40”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B39”)。选择
ElseIf ActiveCell“”则
行(“39:39”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B38”)。选择
ElseIf ActiveCell“”则
行(“38:38”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B37”)。选择
ElseIf活动单元格“1”则
行(“37:37”)。选择
选择。插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrAbove
范围(“B36”)。选择
ElseIf ActiveCell“”则
行(“35:37”)。选择
Selection.EntireRow.Hidden=False
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束

结束如果
我不能代表你想做的一切,但我可以告诉你这会做什么

不必选择任何单元格,除了在宏的末尾将控件返回新行的A列之外,只需插入,保留任何格式

也许有更简单的方法,但我的大脑就是这样工作的。请随意寻找其他解决方案,或者根据您的需要进行调整(如果不合适的话)。代码中的注释应该提供关于发生了什么的见解

测试:参见图片

Sub InsertRowAtEnd()

Dim lastRow As Long   
Dim lastCol As Long   
Dim sheet As String

    sheet = "Sheet1"    'Name your sheet here.
    lastRow = Sheets(sheet).Range("A" & Rows.Count).End(xlUp).row          'Get last Row & col
    lastCol = Sheets(sheet).Cells(2, Columns.Count).End(xlToLeft).Column

    Sheets(sheet).Cells(lastRow, 1).EntireRow.Insert    'Insert a new row before the last row

    For lCol = 1 To lastCol                             'Copy the last row to the inserted row
        Sheets(sheet).Cells(lastRow, lCol) = Sheets(sheet).Cells(lastRow + 1, lCol)
        Sheets(sheet).Cells(lastRow + 1, lCol).ClearContents    'erase the old last row
    Next lCol

    Sheets(sheet).Cells(lastRow + 1, 1).Select           'Return focus to the new cell A(row)

End Sub

请指定您正在使用的编程语言,以及一些您希望代码生成的示例。很抱歉,我本想这样说,但它是在Excel中使用VBA编写的。我有一个图表,这个图表中的一个部分可能需要扩展到多行。我可能离这里很远,但我留下并隐藏了一行,准备添加一行,而不会弄乱下面的部分或弄乱边界。这是我的想法,但主要目标是:使用一个指定了宏的按钮,可以一次又一次地添加行,而不会弄乱边框或下面的行。这更容易理解吗?这里发生的事情并不是你想要的。你是说你有一个带线的边框,你想在最后一行和边框之间插入一行吗?当按钮点击事件之类的事情发生时,怎么办?IF语句正在检查行中是否已有数据?我只是不太明白。