0

我正在尝试从 Excel 电子表格中读取一个范围,并将其存储在带有 VBA 的二维数组中。

Dim myRange As Range
Dim myArray() As Variant

myArray = myRange.Value2

不幸的是,一些单元格包含 VBA 无法识别的字符,例如希腊大写 beta (Unicode 914)。这些字符作为问号(ASCII 63)存储在我的数组中。

我想根据数组的值对数组执行一些计算,并将修改后的数组写入另一个范围,保留原始字母。

我想知道是否有一种简单的方法可以导入这些字符,而不必遍历单个单元格并逐个编码字符串(主要是因为我的范围很大,而且我担心这种方法可能花费的时间)。

4

2 回答 2

0

我认为您必须执行这些步骤才能在 VBA 中使用希腊字符:

  1. 要在 VBA 中使用希腊语:打开控制面板
  2. 点击区域
  3. 单击管理选项卡
  4. 单击更改系统区域设置按钮
  5. 选择在不支持 Unicode 的程序(例如 VBE)中显示文本时使用的语言。该设置将影响您计算机上的所有用户帐户。

来源和信用在这里,这是您纠正问题所需要的。

在此处输入图像描述

编辑

ChrW(914)

也会回来?

在此处输入图像描述

如果你没有按照前面的步骤..

于 2020-07-15T11:56:41.720 回答
0

VBA 实际上可以识别这些字符。但是,VBA 编辑器不知道如何显示它们并用问号替换它们。您的myArray变量实际上具有正确的字符。测试特定的 unicode 字符使用AscWChrWVBA 函数(W我猜是宽的)。例如(假设每个单元格myRange只包含 1 个字符,您可以使用:

' Test by the unicode character
If myArray(1, 1) = ChrW(914) Then

或者

' Test by the character unicode number
If AscW(myArray(1, 1)) = 914 Then

此外,在 excel 公式中,您可以使用 UNICODE() 和 UNICHAR() 工作表函数来获得类似的结果。

于 2020-07-15T11:58:00.960 回答