我有一個名爲Search
的代碼,可以找到搜索項目的單元格引用。從那以後,我想用得到的搜索值的範圍:如何更改地址屬性的「列」部分
Search.Address
一旦VBA獲取地址,說$A$1
,我想改變$A
到$M
,因此,返回值將是$M$1
這可能嗎?
謝謝!
我有一個名爲Search
的代碼,可以找到搜索項目的單元格引用。從那以後,我想用得到的搜索值的範圍:如何更改地址屬性的「列」部分
Search.Address
一旦VBA獲取地址,說$A$1
,我想改變$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 + ģ
或使用它作爲這樣
=SwapColumns(A1, "M")
電子表格函數
的代碼添加到模塊
注:小組稱爲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
OK,我必須失去了一些東西,爲什麼不乾脆用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
因爲這是硬編碼的? – 2013-10-10 11:50:16
這裏是一個班輪?
Debug.Print Range("M" & Range(rangeAddress).Row).Address
凡rangeAddress
商店$A$1
或任何其他地址。
+1單行解決方案我沒有想到!如果可以的話,我會給你+10! – 2013-10-10 13:00:34
+1也同意我的看法......不錯的解決方案。 –
這就是它!謝謝! –
我想知道,你介意解釋你如何提出解決方案?謝謝! –
我的'rangeAddress'變量將字符串的地址保存爲字符串ex。 '$ A $ 1'。您通過引用另一個子變量來發送該變量,以修改該變量。你可以在'newCol'中添加一個額外的參數,它是'rangeAddress'變量中要替換的新列。你添加一個Variant類型的數組並使用Split()函數根據'$'*美元符號*的分隔符將'rangeAddress'變量拆分成多個部分。然後你遍歷arr數組 - 知道arr(1)將存儲你創建一個條件if語句的列號。通過迭代'arr'數組來重新創建'rangeAddress'' – 2013-10-10 11:30:02