Excel单元格名称查找

问题描述 投票:0回答:1

所以我尝试创建一个函数,在其中使用下拉菜单来更改显示的 Excel 工作表的语言。我最初的想法是给单元格命名,然后创建在表中查找单元格名称的函数,然后根据语言应用偏移量,以便更改特定单元格中的语言。

Private Sub Worksheet_Change(ByVal Target As Range)
'///////////////INITIATES THE LANGUAGE CHANGE AND RETURNS OFFSET
Dim strLng As String
strLng = Sheet9.Range("A1").Value

On Error Resume Next

    If Target.Address = "$A$1" Then
        Select Case strLng
            Case "DA"
               LanguageChange (1)
            Case "EN"
                LanguageChange (2)
            Case "DE"
                LanguageChange (3)
        End Select
    End If
End Sub

然后我想使用如下所示的表格,然后在模块中使用下面的函数来查找文本 ID 并使用偏移量来应用新单词。然而问题是,当我这样做时什么也没有发生,而且我找不到错误。任何建议或想法:)

[Table with translations][2]

Option Explicit


'///////////////////////////////////////////////////CHANGE LANGUAGE
Public Function LanguageChange(LngOffset As Integer)

Dim LCcell As Name
Dim LCrng As Range

On Error Resume Next
Application.ScreenUpdating = False
    For Each LCcell In Sheet9.Names
        Set LCrng = Sheet3.Range("AA1:AA250").Find(LCcell, LookIn:=xlValues, MatchCase:=False).Offset(0, LngOffset)
        LCcell.Value = LCrng.Value
    Next
Application.ScreenUpdating = True

End Function
excel vba
1个回答
0
投票

LCCell
是一个名称而不是一个范围 - 但你将它视为一个范围。

看看如何检索名称的真实名称 (=

strName
) 以及它所引用的单元格/范围 (=
rgName
)。

这会起作用:

    Dim strName As String, rgName As Range
    
    For Each LCcell In ActiveSheet.Names
        strName = Split(LCcell.Name, "!")(1)    'split is necessary as the name of the name includes the sheetname
        Set rgName = LCcell.RefersToRange
        Set LCrng = lo.DataBodyRange.Find(strName, LookIn:=xlValues, MatchCase:=False).Offset(0, LngOffset)
        rgName.Value = LCrng.Value
    Next   
© www.soinside.com 2019 - 2024. All rights reserved.