Excel中命名区域的有效“字母”是什么?

根据Excel文档: 了解名称的语法规则 :

有效字符名称的第一个字符必须是字母,下划线字符(_)或反斜杠()。 名称中剩余的字符可以是字母 ,数字,句点和下划线字符。

但究竟是一封信呢?
我以为这只意味着ASCII字母,如:AZ和az
但显然我错了,因为还有以下工作(在我的英文Excel 2013上):

  • 德语变音符号:Ö,ö,Ü,ü等
  • 法语口音:é,ê等

那么,如何在VBA中检查string中哪些字符是有效的,哪些不是?

我跑了这么一小段代码:

Sub WhatsInAName() Dim i As Long, CH As String, r As Range, msg As String Dim K As Long Set r = Range("A1") On Error Resume Next K = 1 For i = 1 To 255 CH = Chr(i) r.Name = CH If Err.Number = 0 Then Cells(K, 1) = i K = K + 1 Else Err.Number = 0 End If Next i On Error GoTo 0 End Sub 

它应该logging有效名字起始符的ascii代码。 我懂了:

65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 92 95 97 98 100 101 102 103 104 105 106 107 108 109 110 111 112 113 115 116 117 118 119 120 121 122 131 133 134 135 137 138 140 142 145 146 147 148 150 151 153 154 156 158 159 161 164 167 168 170 173 175 176 177 178 179 180 181 182 183 184 185 186 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

我不知道为什么67失踪。

编辑#5:

以下是第一个字符后的有效字符列表:

32 46 48 49 50 51 52 53 54 55 56 57 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 95 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 128 131 133 134 135 136 137 138 140 142 145 146 147 148 150 151 152 153 154 156 158 159 161 164 167 168 170 173 175 176 177 178 179 180 181 182 183 184 185 186 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

感谢Martin Trummer。

事实certificate,这个问题的答案是相当复杂的。 用户Gary的学生的答案已经非常接近,但是这里有更多要考虑的事情:

  • 单字符名称:示例:
    • “a”是允许的
    • “c”是不允许的
  • 在开始的字符:
    例子:
    • “cX”是允许的
    • “?X”是不允许的
  • 开始后的字符
    例子:
    • “_?” 是允许的(“?”,“?_”不是)
  • 组合:
    • “R1048576C1”无效
    • “R1048577C1”有效
    • “\ xx”有效
    • “\ x”无效
  • 统一
  • 工作簿名称与工作表名称:
    例如工作表上允许“\ a”,但在工作簿上不允许

我已经做了一个GitHub项目excel-名称 ,其中包括一个有效的字符(也unicode)列表和一些VBA代码,您可以使用的Excel表。

此外,该项目还包括考虑完整Excel名称(不仅是单个字符)的function:请阅读文档以获取完整的详细信息