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

Vba 将值从冻结列复制到下一个可见列,vba,excel,Vba,Excel,我试图在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

我试图在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

理论上,如果有任何帮助,我需要的列字母将始终是第三个可见列。请记住,我从未用VB或excel编写过代码,如果有任何帮助,我将不胜感激。我看过一些例子,但它们都过于复杂,我无法真正理解到底发生了什么。我们将非常感谢您的帮助

这里有两张图片也可以解释我需要什么

如果我点击按钮,这就是结果

因此,如果我知道滚动到k列并按下按钮,它会将其复制到k列


提前谢谢。

如果我正确理解了您的帖子,您希望在单击按钮时将硬编码范围(
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

问候,

您好,是的,您部分理解。但是,我只想将(B1:B4)中的值复制到B后面的列中。因此,如果我滚动并且列是A | B | E,那么(B1:B4)中的值必须仅复制到(E1:E4),而不能复制到(C1:C4)和(D1:D4)。另外,它必须完全不依赖于活动单元。我稍后将尝试您的解决方案。非常感谢。rwilson解决方案略有改进是我一直在寻找的,但感谢您的帮助。谢谢您,这似乎已经奏效。不完全是我想要的,不需要lastFrozenRowCol。删除它并硬编码到b,它成功了,非常感谢。
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