Vba 细胞参考修饰

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

我已经选择了一系列单元格,我想将所选单元格的单元格引用与单词SUM连接起来

e、 g.如果我选择单元格A1,我希望宏返回一个引用“A1SUM”

我的代码

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,但实际上没有改变单元格引用