Vba 细胞参考修饰
我已经选择了一系列单元格,我想将所选单元格的单元格引用与单词SUM连接起来 e、 g.如果我选择单元格A1,我希望宏返回一个引用“A1SUM” 我的代码Vba 细胞参考修饰,vba,excel,Vba,Excel,我已经选择了一系列单元格,我想将所选单元格的单元格引用与单词SUM连接起来 e、 g.如果我选择单元格A1,我希望宏返回一个引用“A1SUM” 我的代码 Sub UpdateCellReference() For Each mycell In Selection mycell.Name (mycell.Name & "SUM") Next mycell End Sub 您可以尝试以下代码: Sub UpdateCellReference() D
Sub UpdateCellReference()
For Each mycell In Selection
mycell.Name (mycell.Name & "SUM")
Next mycell
End Sub
您可以尝试以下代码:
Sub UpdateCellReference()
Dim mycell As Range
Dim MyStr As String
For Each mycell In Selection
MyStr = MyStr & mycell.Address(False, False) & "SUM"
Next mycell
MsgBox MyStr
End Sub
您可以尝试以下代码:
Sub UpdateCellReference()
Dim mycell As Range
Dim MyStr As String
For Each mycell In Selection
MyStr = MyStr & mycell.Address(False, False) & "SUM"
Next mycell
MsgBox MyStr
End Sub
使用Shai Rado的代码作为起点 将他的
MsgBox MyStr
行更改为
AllocateNamedRange ThisWorkbook, MyStr, "='" & Selection.Parent.Name & "'!" & Selection.Address, "A1"
并将这两个过程添加到模块中:
Public Sub AllocateNamedRange(Book As Workbook, sName As String, sRefersTo As String, Optional ReferType = "R1C1")
With Book
If NamedRangeExists(Book, sName) Then .Names(sName).Delete
If ReferType = "R1C1" Then
.Names.Add Name:=sName, RefersToR1C1:=sRefersTo
ElseIf ReferType = "A1" Then
.Names.Add Name:=sName, RefersTo:=sRefersTo
End If
End With
End Sub
Public Function NamedRangeExists(Book As Workbook, sName As String) As Boolean
On Error Resume Next
NamedRangeExists = Book.Names(sName).Index <> (Err.Number = 0)
On Error GoTo 0
End Function
Public Sub-allocateNameRange(书本作为工作簿,sName作为字符串,sRefersTo作为字符串,可选refereType=“R1C1”)
带书
如果namedrange存在(Book,sName),那么.Names(sName).Delete
如果referetype=“R1C1”,则
.Names.Add Name:=sName,referestor1c1:=sRefersTo
ElseIf refereType=“A1”则
.Names.Add Name:=sName,referesto:=sRefersTo
如果结束
以
端接头
公共函数NamedRangeExists(Book作为工作簿,sName作为字符串)为布尔值
出错时继续下一步
NamedRangeExists=Book.Names(sName.Index)(Err.Number=0)
错误转到0
端函数
使用Shai Rado的代码作为起点
将他的MsgBox MyStr
行更改为
AllocateNamedRange ThisWorkbook, MyStr, "='" & Selection.Parent.Name & "'!" & Selection.Address, "A1"
并将这两个过程添加到模块中:
Public Sub AllocateNamedRange(Book As Workbook, sName As String, sRefersTo As String, Optional ReferType = "R1C1")
With Book
If NamedRangeExists(Book, sName) Then .Names(sName).Delete
If ReferType = "R1C1" Then
.Names.Add Name:=sName, RefersToR1C1:=sRefersTo
ElseIf ReferType = "A1" Then
.Names.Add Name:=sName, RefersTo:=sRefersTo
End If
End With
End Sub
Public Function NamedRangeExists(Book As Workbook, sName As String) As Boolean
On Error Resume Next
NamedRangeExists = Book.Names(sName).Index <> (Err.Number = 0)
On Error GoTo 0
End Function
Public Sub-allocateNameRange(书本作为工作簿,sName作为字符串,sRefersTo作为字符串,可选refereType=“R1C1”)
带书
如果namedrange存在(Book,sName),那么.Names(sName).Delete
如果referetype=“R1C1”,则
.Names.Add Name:=sName,referestor1c1:=sRefersTo
ElseIf refereType=“A1”则
.Names.Add Name:=sName,referesto:=sRefersTo
如果结束
以
端接头
公共函数NamedRangeExists(Book作为工作簿,sName作为字符串)为布尔值
出错时继续下一步
NamedRangeExists=Book.Names(sName.Index)(Err.Number=0)
错误转到0
端函数
因此,如果您选择范围A1:A7,您希望它被称为A1SUMA2SUMA3SUMA4SUMA5SUMA6SUMA7SUM
?是的,这正是我的意思。感谢strName=strName&Replace(mycell.Address,“$”,“”)和“SUM”
然后mycell.Name(strName)
我得到了错误运行时错误“438”,对象不支持此属性或方法,因此如果选择范围A1:A7,您希望它被称为A1SUMA2SUMA3SUMA4SUMA5SUMA6SUMA7SUM
?是的,这正是我的意思。感谢strName=strName&Replace(mycell.Address,“$”,“”)和“SUM”
然后mycell.Name(strName)
我收到运行时错误“438”,对象不支持此属性或方法您好,谢谢您的输入,我运行了代码,但它只是在消息框中返回了一个sum,但实际上没有改变单元格引用您好,谢谢您的输入,我运行了代码,但它只是在消息框中返回了一个sum,但实际上没有改变单元格引用