将值从冻结列复制到下一个可见列

时间:2015-07-07 17:51:58

标签: excel vba excel-vba

我正在尝试在excel中创建一个简单的按钮,它将在冻结列之后找到当前列。然后,我想将我的值从B1-B4(B是冻结列)写入冻结列之后的任何列。

举个例子。 B现在冻结我滚动到下一列是G.如果我点击按钮它必须将值从b1复制到g1。如果我然后继续滚动直到我在列k,它必须从b1取值并将其复制到k1。

Sub Button2_Click()

Dim value1 As Double
Dim value2 As Double
Dim value3 As Double
Dim value4 As Double

value1 = Cells(1, "B").Value
value2 = Cells(2, "B").Value
value3 = Cells(3, "B").Value
value4 = Cells(4, "B").Value

Cells(1, "C").Value = value1
Cells(2, "C").Value = value2
Cells(3, "C").Value = value3
Cells(4, "C").Value = value4

End Sub

正如您所看到的那样,它被硬编码复制到C列。理想情况下,我希望能够获得一个知道下一列将是什么的变量并用它替换c。

理论上,如果有任何帮助,我需要的专栏信将永远是第3个可见列。请记住,我从未编写VB或excel编码,并将感谢任何帮助。我看了一些例子,但所有这些都过于复杂,我无法理解发生了什么。所有的帮助将非常感激。

这是两张图片,也可以解释我的需要。

First Image

点击按钮,这就是结果。

Second image

因此,如果我知道滚动到列k并按下按钮,则应将其复制到列K.

enter image description here

提前谢谢。

2 个答案:

答案 0 :(得分:1)

Sub Button_2_Click()    

Dim value1 As Double  
Dim value2 As Double
Dim value3 As Double
Dim value4 As Double
Dim lastFrozenCol as Integer
Dim firstCol as Integer

lastFrozenCol = ActiveWindow.Panes(1).VisibleRange.Columns.Count   
firstCol = ActiveWindow.Panes(2).VisibleRange.Column

value1 = Cells(1, lastFrozenCol).Value
value2 = Cells(2, lastFrozenCol).Value
value3 = Cells(3, lastFrozenCol).Value
value4 = Cells(4, lastFrozenCol).Value

Cells(1, firstCol).Value = value1
Cells(2, firstCol).Value = value2
Cells(3, firstCol).Value = value3
Cells(4, firstCol).Value = value4

End Sub

答案 1 :(得分:0)

如果我正确理解您的发布,您希望在单击按钮时将硬编码范围(B1:B4)中的值复制到当前活动单元格内和下的单元格中。请考虑以下解决方案:

编辑:

Sub Button2_Click()

    Cells(1, ActiveWindow.SplitColumn + 1).value2 = Cells(1, 2).value2
    Cells(2, ActiveWindow.SplitColumn + 1).value2 = Cells(2, 2).value2
    Cells(3, ActiveWindow.SplitColumn + 1).value2 = Cells(3, 2).value2
    Cells(4, ActiveWindow.SplitColumn + 1).value2 = Cells(4, 2).value2

End Sub

此致