首页 > 解决方案 > Excel VBA:如何在“@”处用商业写列名

问题描述

我试图找出我应该如何处理一个命名列,myTable其中在其名称中包含一个广告 at ( @),例如active @ mail。此代码应该在立即输出窗口中打印列号:

Sub teststring()
    Dim s As String
    s = ActiveSheet.Range("myTable[active @ mail]").Column
    Debug.Print s
End Sub

但它失败了。使用.Range("myTable[active" & Chr(64) "& mail]")也失败。

标签: excelvba

解决方案


你可以这样做:

s = ActiveSheet.listobjects("myTable").listcolumns("active @ mail").Range.Column

另请参阅https://support.office.com/en-us/article/using-structured-references-with-excel-tables-f5ed2452-2337-4f71-bed3-c8ae6d2b276e 了解如何转义特殊字符

所以:

s = ActiveSheet.Range("myTable[active '@ mail]").Column

也将工作。

@在结构化引用中具有特殊含义,因此您不能在列名中使用它而不用'(单引号)转义它


推荐阅读