跳到主要内容

使用 VBA 在屏幕上写字

如果你想使用 VBA 在屏幕的任意位置写字,可以使用 TextOut 函数。TextOut 函数使用当前选定的字体、背景色和文本颜色在指定位置写入一个字符串。

TextOut 函数语法

BOOL TextOutA(
  [in] HDC    hdc,
  [in] int    x,
  [in] int    y,
  [in] LPCSTR lpString,
  [in] int    c
);

TextOut 函数参数

TextOut 函数的参数如下表所示:

参数 说明
[in] hdc 设备上下文的句柄。
[in] x 系统用来对齐字符串的引用点的 x 坐标(以逻辑坐标为单位)。
[in] y 系统用来对齐字符串的引用点的 y 坐标(以逻辑坐标为单位)。
[in] lpString 指向要绘制的字符串的指针。 字符串不需要为零终止,因为 cchString 指定字符串的长度。
[in] c 由 lpString 指向的字符串的长度(以字符为单位)。

示例

以下示例用 TextOut 函数将字符串输出到屏幕指定位置,默认输出字体颜色为黑色,如果要改变字体颜色可以使用 SetTextColor 函数

#If VBA7 And Win64 Then
    Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
    Declare PtrSafe Function SetTextColor Lib "gdi32" (ByVal hDC As Long, ByVal crColor As Long) As Long
    Declare PtrSafe Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hDC As Long, ByVal nXStart As Long, ByVal nYStart As Long, ByVal lpString As String, ByVal cchString As Long) As Long
#Else
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Declare Function SetTextColor Lib "gdi32" (ByVal hDC As Long, ByVal crColor As Long) As Long
    Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal nXStart As Long, ByVal nYStart As Long, ByVal lpString As String, ByVal cchString As Long) As Long
#End If

Sub TextOutput()
    ' https://oacourse.com/excel/output-to-screen-using-vba/
    Dim hDC As Long
    ' 获取主屏幕的句柄
    hDC = GetDC(0)
    Dim str As String
    ' 输出到屏幕的内容
    str = "将字符串输出到屏幕指定位置"
    ' 设置字体颜色为红色,默认为黑色
    SetTextColor hDC, vbRed
    ' 将内容输出到屏幕
    TextOut hDC, 100, 80, str, LenB(str)
    ' 释放句柄
    ReleaseDC 0, hDC
End Sub

评论

您的电子邮件地址不会显示出来。*号为必填项。