VBA中结构化表格列名含单引号时Range()方法失效问题排查
解决VBA中结构化表格列名含单引号的引用问题
当结构化表格列名包含单引号(比如Father's Countries)时,直接用Range("UsersTbl[Father's Countries]")会触发错误,原因是VBA解析该引用时,单引号会干扰表格列名的识别。你之前用Chr(39)拼接的方式没解决根本问题,问题不在字符串拼接,而是表格引用的语法规则。
这里给你两种可行的解决办法:
方法1:用双单引号转义列名里的单引号
在列名的单引号位置替换成两个连续的单引号,VBA就能正确识别列名:
Set LookInColsSingleEntryArr(0) = Range("UsersTbl[Father''s Countries]")
注意是两个连续的单引号,这是VBA中处理字符串内单引号的标准转义方式。
方法2:通过ListObject对象直接引用列(更推荐)
避开Range字符串引用的坑,直接定位表格对象再获取目标列,这种方法更稳定,无需纠结转义:
Dim usersTable As ListObject Set usersTable = ThisWorkbook.Worksheets("你的工作表名").ListObjects("UsersTbl") Set LookInColsSingleEntryArr(0) = usersTable.ListColumns("Father's Countries").Range
只需把代码里的"你的工作表名"替换成表格所在的实际工作表名称即可。
内容的提问来源于stack exchange,提问作者jubitips
相关产品推荐
相关产品推荐

