如何使用 Excel VBA 输出键入 ALT+(数字) 时获得的完全相同的字符



我写了一个快速操作来生成一个表,以便在使用 ALT 代码时用作参考。 我得到的输出与在单元格中键入时实际显示的输出不匹配。例如,输出显示 ALT+3 应该是这个,但如果我实际键入 ALT+3,它会显示这个

我知道我可以使用CHRw()来实现任何字符,但我想我在这里寻找的是是否有一个直接代码,相当于按住 ALT 并按下数字组合。

以下是我用来生成表的代码:

Sub CHARACTER_TABLE()
    'DEFINE VARIABLES
    Dim CROW As Integer
    Dim CCOL As Integer
    Dim A As Integer
    CROW = 2
    CCOL = 1
    A = 1
    Do
        Cells(CROW, CCOL) = A
        Cells(CROW, (CCOL + 1)) = Chr(A)
        CROW = CROW + 1
        A = A + 1
        If CROW = 42 Then
            CROW = 2
            CCOL = CCOL + 3
        End If
        If A = 256 Then
            Exit Do
        End If
    Loop
End Sub

对于没有前导零的代码,将从系统 OEM 代码页转换字符:

ALT + 128  gives "Ç" with the code page 487 (https://en.wikipedia.org/wiki/Code_page_437)

对于具有前导零的代码,将从系统 ANSI 代码页转换字符:

ALT + 0128  gives "€" with the code page 1251 (https://en.wikipedia.org/wiki/Windows-1251)

要在工作表中列出默认的 OEM 和 ANSI 字符,请执行以下操作:

Private Declare Function MultiByteToWideChar Lib "kernel32" ( _
  ByVal codepage As Long, ByVal dwFlags As Long, _
  ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, _
  ByRef lpWideCharStr As Any, ByVal cchWideChar As Long) As Long
Function ChrEx(ByVal code As Integer, ByVal codepage As Long) As String
  Dim tgt(0 To 1) As Byte
  MultiByteToWideChar codepage, 4, code, 2, tgt(0), 2
  ChrEx = tgt
End Function
Sub DisplayCharSets()
  Dim r&, chars(1 To 255, 1 To 1) As String
  'List the system OEM code page in range A1
  chars(1, 1) = "OEM"
  For r = 2 To 255
    chars(r, 1) = ChrEx(r, 1) ' Default OEM code page = 1
  Next
  [A1:A255] = chars
  'List the system ANSI code page in range B1
  chars(1, 1) = "ANSI"
  For r = 2 To 255
    chars(r, 1) = ChrEx(r, 0) ' Default ANSI code page = 0
  Next
  [B1:B255] = chars
End Sub

最新更新