如何更改地址属性的“列”部分
我有一个名为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