如何更改地址属性的“列”部分

我有一个名为Search的代码来查找search项的单元格引用。 之后,我想要使用以下命令获取search值的范围:

Search.Address

一旦vba获得地址,例如$A$1 ,我想将$A更改$A $M ,所以返回值将是$M$1

这可能吗?

谢谢!

 Sub Main() Dim rangeAddress As String rangeAddress = Range("A1").Address Debug.Print "Before conversion: " & rangeAddress SwapColumn rangeAddress, "M" Debug.Print "After conversion: " & rangeAddress End Sub Private Sub SwapColumn(ByRef r As String, ByVal newCol As String) Dim arr As Variant arr = Split(r, "$") r = vbNullString Dim i As Long For i = LBound(arr) To UBound(arr) If i = 1 Then r = "$" & r & newCol & "$" Else r = r & arr(i) End If Next i End Sub 

运行Main()子菜单并检出即时窗口CTRL + G

在这里输入图像说明


或者将其用作这样的电子表格function

 =SwapColumns(A1, "M") 

将代码添加到模块

注意: Sub被称为SwapColumn ,函数SwapColumns在最后是s

 Function SwapColumnS(r As Range, newCol As String) As String Dim rngAddress As String rngAddress = r.Address Dim arr As Variant arr = Split(rngAddress, "$") rngAddress = vbNullString Dim i As Long For i = LBound(arr) To UBound(arr) If i = 1 Then rngAddress = "$" & rngAddress & newCol & "$" Else rngAddress = rngAddress & arr(i) End If Next i SwapColumnS = rngAddress End Function 

在这里输入图像说明

这是一个class轮?

 Debug.Print Range("M" & Range(rangeAddress).Row).Address 

其中rangeAddress存储$A$1或任何其他地址。

好吧,我一定会错过一些东西,为什么不简单地使用REPLACE:

 Sub Main() Dim rangeAddress As String rangeAddress = Range("A1").Address Debug.Print "Before conversion: " & rangeAddress rangeAddress = Replace(rangeAddress, "$A$", "$M$") Debug.Print "After conversion: " & rangeAddress End Sub