0

我不是程序员,但一直在担任这个角色,因为我的公司要求我为日常流程创建工作表,所以如果我没有用正确的术语陈述我的问题并且你必须分解你的答案,我提前道歉你和我一样是一个菜鸟。

问题:我想设置一个按钮,允许用户在他们正在处理的活动工作表中添加一行。在后台,我希望电子表格在与添加的工作簿相同的位置的同一工作簿的另一张工作表中添加一行。(这两张表仅与具有上个月信息的非活动工作表相同)我需要这样做的原因是因为活动工作表正在从非活动工作表中提取数据,并且我想保持相同的行数两张表的数据都在同一行中,因此它将提取正确的数据。

感谢您的任何建议!

4

2 回答 2

0

我不是 100% 确定这是否是您在重读您的帖子后正在寻找的内容,但我会试一试。

Sub Button1_Click()
    r0w = Selection.Row
    c0l = Selection.Column
    ThisWorkbook.Sheets("Sheet1").Cells(r0w, c0l).EntireRow.Insert
    ThisWorkbook.Sheets("Sheet2").Cells(r0w, c0l).EntireRow.Insert
End Sub

看起来这对我有用。

于 2013-11-14T19:56:54.213 回答
0

从使用宏记录器的快速播放中,我得到了以下代码:

Sub insertRow()
    Dim insertBeforeRow
    insertBeforeRow = 1

    ActiveSheet.Rows(insertBeforeRow).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    ' The following two lines are the same - both active the second sheet in the book
    Sheet2.Activate
    Sheets(2).Activate

    ActiveSheet.Rows(insertBeforeRow).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

然后快速使用调试器,我看到 ActiveSheet 具有属性index- 这是它在 Sheets 集合中的索引。(单击ActiveSheet,右键单击并选择添加观察)

我想出了这个(没有错误检查,别忘了添加一些!- 选择工作簿中的最后一张表并运行它会导致可怕的“呃,呃,你不是假的”错误声音和消息框)

Sub getActiveSheet()
    Dim curSheetIndex, numSheets, secondSheetIndex

    curSheetIndex = ActiveSheet.Index
    secondSheetIndex = curSheetIndex + 1

    ' the following two lines are equivalent - both operate on the Active Sheet
    ActiveSheet.Cells(1, 1) = "Active Sheet"
    Sheets(curSheetIndex).Cells(1, 1) = "Active Sheet"

    ' finally, operate on the following sheet
    Sheets(secondSheetIndex).Cells(1, 1) = "Sheet following Active Sheet"
End Sub

您可以以适合您目的的方式将两个片段焊接在一起。在发现可用的功能和属性时,VBA 环境中的调试器非常漂亮。老实说,这是我非常喜欢在 VBA 中完成此类小任务的原因之一。当至少对调试器和 Excel 的对象模型有一点熟悉时,它通常很快就很容易获得您想要的效果。

于 2013-11-14T19:11:41.917 回答