Excel VBA-我的VBA代码出错了:为什么西班牙语字符(á;&é;í;ó;ú;ñ;¡;¿;)会发生变异?

Excel VBA-我的VBA代码出错了:为什么西班牙语字符(á;&é;í;ó;ú;ñ;¡;¿;)会发生变异?,vba,excel,macros,non-ascii-characters,Vba,Excel,Macros,Non Ascii Characters,这是我的第一个问题,所以请耐心听我说 正如我试图在标题上解释的那样,我在Excel工作簿中的VBA代码弄得一团糟。工作簿被分享给了很多人,这样他们就可以输入一些数据(它更复杂,但让我们先别说了),而我收到的一些文件不起作用:我收到了400个错误,似乎没有代码起作用 假设我使用命名范围来标识敏感数据的分配位置,但大多数宏现在都无法工作,因为代码中带有任何特殊西班牙语字母(á、é、í、ó、ú、ñ)的名称已切换。你明白了吗?不呃,好吧,我正在尽力解释这个问题 看看宏的名字怎么都错了?!这并不酷:( 当

这是我的第一个问题,所以请耐心听我说

正如我试图在标题上解释的那样,我在Excel工作簿中的VBA代码弄得一团糟。工作簿被分享给了很多人,这样他们就可以输入一些数据(它更复杂,但让我们先别说了),而我收到的一些文件不起作用:我收到了400个错误,似乎没有代码起作用

假设我使用命名范围来标识敏感数据的分配位置,但大多数宏现在都无法工作,因为代码中带有任何特殊西班牙语字母(á、é、í、ó、ú、ñ)的名称已切换。你明白了吗?不呃,好吧,我正在尽力解释这个问题

看看宏的名字怎么都错了?!这并不酷:(

当我尝试打开我的UserForm时,出现400错误。加载时,它会查找工作表中表中的某些值,但代码中表的列名称与工作表中的实际列名称不匹配:

我想知道为什么会发生这种情况,我能做些什么来修复和防止这种情况再次发生(除了不使用eñe(ñ)和所有其他特殊字符)

我提前感谢你们帮助我克服挫折

“Aguante,Stack!!

最佳解决方案:

切勿在子程序或变量的名称中使用非US-ASCII字符!编程语言从未被设定为区域设置敏感

您可以在工作表的标题名称等中使用这些非US-ASCII字符,但如果您也在代码中对这些名称进行编码,则它们可能会被更改。不过,您应该能够将它们作为字符串进行操作


US-ASCII字符为0..127。所有较高的字符都需要代码页来翻译它们。

如果您想在代码中将这些字符用作字符串,例如

dim s_my_string as string
s_my_string = "mañana"
更好的使用方法是将其引用到如下单元格:

dim s_my_string as string
s_my_string = Range("A1").Text
在单元格“A1”中,您可以写“mañana”或任何特殊内容。通常,这被认为是VBA应用程序开发中的一种良好做法


编辑:看到您的案例,如果您是维护和使用它的人,您应该将名称改写为标准拉丁语。

我同意,这是一团乱麻。我想说,从现在起,最好不再让人们访问VBA代码,通过密码保护它。您可能还想编写一个“医生修复程序”sub,并在执行之前运行它来检查和修复相关sub。至于如何编写“doctor fix”sub,您必须使用VBE编辑器编程,您可以从中找到很多帮助。这个问题是否发生在您编写代码的同一台机器上?在我看来,这好像是编码错误