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

时间:2016-04-19 08:27:10

标签: excel vba excel-vba macros non-ascii-characters

这是我在这里的问题,所以请耐心等待......

当我试图解释标题时,我在Excel工作簿中的VBA代码搞得一团糟。工作簿被很多人共享,所以他们可以输入一些数据(它更复杂,但是让我们把它留在那里),我收到的一些文件不起作用:我得到400错误,没有代码似乎工作。

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

看看宏的名称是多么错误?!这并不酷:(

当我尝试打开UserForm时,出现400错误。加载时,它会在工作表的表中查找某些值,但代码中表的列名与工作表中的实际列不匹配: This is one of the many Excel Tables with column names that use the special characters. In this case, the name of the column in the code is "Observaci-n"... they just won't match.

我想知道为什么会发生这种情况,我该怎么做才能解决并防止再次发生这种情况(除了不使用eñe(ñ)和所有其余的特殊字符)

我提前感谢你们帮助我沮丧。

¡Aguante,Stack !!

2 个答案:

答案 0 :(得分:1)

最佳解决方案:

从不在子程序或变量的名称中使用非US-ASCII字符!编程语言从未被认为是区域敏感的。

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

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

答案 1 :(得分:0)

如果您想在代码中将此字符用作字符串,例如喜欢

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应用程序开发中的一个好习惯。

编辑:看了你的情况,如果你是维护和使用它的人,你应该将名字重写为标准拉丁语。