我试图找出应该如何处理命名列,myTable其中的名称中包含(@)处的广告,例如active @ mail。该代码应该在立即输出窗口中打印列号:
Sub teststring()
Dim s As String
s = ActiveSheet.Range("myTable[active @ mail]").Column
Debug.Print s
End Sub
Run Code Online (Sandbox Code Playgroud)
但是失败了。使用.Range("myTable[active" & Chr(64) "& mail]")也会失败。
您可以这样做:
s = ActiveSheet.listobjects("myTable").listcolumns("active @ mail").Range.Column
Run Code Online (Sandbox Code Playgroud)
另请参阅https://support.office.com/zh-cn/article/using-structured-references-with-excel-tables-f5ed2452-2337-4f71-bed3-c8ae6d2b276e, 以了解如何转义特殊字符
所以:
s = ActiveSheet.Range("myTable[active '@ mail]").Column
Run Code Online (Sandbox Code Playgroud)
也可以。
@在结构化引用中有特殊含义,因此您必须在列名中使用转义符'(单引号)将其转义