有没有办法使用VBA创建滚动条和按钮,每个按钮都有链接,按下按钮删除?

时间:2012-06-06 12:21:33

标签: excel-vba vba excel

我正在通过创建一个包含三个按钮而不是三个要查看的标签的工作表来简化工作表。

这是工作簿。

https://dl.dropbox.com/u/3327208/Excel/Archives.xlsx

我试图做的是,每个按钮对应一个特定的标签,它最终将调整每个字段以适合每个标签中的每个相应列。归档1需要与归档2或3不同的格式。

现在这将是一个简单的复制和粘贴概念,但我想要做的是两件事使得它比基本脚本更复杂,因为我可以创建一个删除列的脚本,并将数据粘贴到单元格中但是我会使用一个滚动条,而且我不能用相同的命令删除它,或者它可以吗?这就是我要找的......

- 如何创建滚动条,所有数据都与之对应    将使用所述活动数据,所以如果我按下第一个按钮全部    屏幕上的数据将对应于存档1,因此也是如此    滚动条。如果我按下按钮2,数据和滚动条将会    对应档案2等......

  • 让滚动条的相关行数 与之交互将始终对应于最后一行,因此没有 当滚动条碰到底部时,最后是“空”数据。

  • 如何删除所述滚动条,以便其他人可以替换。

- 这是一个需要,而不是需要,但是让输入数据的单元格与滚动条和滚动条交互    只会到可见工作表的高度这么远。所以    如果工作表显示20行,那就是英文吧    数据将会进入。

再次感谢。

我决定尝试使用lastrow概念来制作它,以便脚本将进入“lastrow”进入.Max滚动条将不会超过最后一行数据,这里是代码:

    Sub scrollbar()

    Dim lastrow As Long
    Dim wsJAR As Worksheet 'JL Archive
    Dim wsARC As Worksheet 'JL Archive
    Set wsJAR = Sheets("JL Archive")
    Set wsARC = Sheets("Archives")

    With wsARC
    lastrow = wsJAR.Range("B" & .Rows.Count).End(xlUp).Row
    ActiveSheet.ScrollBars.Add(1107, 44, 15, 404).Select

        With Selection
            .Max = lastrow
            .LinkedCell = "Lists!$G$3"
        End With
    End With
End Sub

没有错误,它接受lastrow作为一个数字,但是继续经过细胞,即使它没有理由这样做。

最后一行是36,现在如果我从13开始,从36开始它完美无缺,但我无法想象这就是答案。

1 个答案:

答案 0 :(得分:1)

更改

With wsARC
    lastrow = wsJAR.Range("B" & Rows.Count).End(xlUp).Row
    wsARC.FreezePanes = False
    Range("A1:Q13").Select
    Range("Q1").Activate
    wsARC.FreezePanes = True
End With

With wsARC
    lastrow = wsJAR.Range("B" & .Rows.Count).End(xlUp).Row
    .Activate
    ActiveWindow.FreezePanes = False
    .Range("A1:Q13").Select
    .Range("Q13").Activate
    ActiveWindow.FreezePanes = True
End With

最终代码

Sub freezecells()
    Dim lastrow As Long
    Dim wsJAR As Worksheet 'JL Archive
    Dim wsARC As Worksheet 'Archive

    Set wsJAR = Sheets("JL Archive")
    Set wsARC = Sheets("Archives")

    With wsARC
        lastrow = wsJAR.Range("B" & .Rows.Count).End(xlUp).Row
        .Activate
        ActiveWindow.FreezePanes = False 
        .Range("A1:Q13").Select
        .Range("Q13").Activate
        ActiveWindow.FreezePanes = True
    End With
End Sub