VBA Excel - 解决从字段中删除文本时出现的错误 13

VBA Excel - Resolving Error 13 when deleting text from a field

传播sheet我正在为工作中的项目进行编辑。 sheet 在第 1、3、4 和 5 列中使用字符串值。多个人将访问此 sheet 因此为了保持整洁的外观,我将 sheet 设置为大写输入时每一列中的值。

    Dim letter as String
    Select Case Target.Column
        Case Is = 1, 3, 4, 5
            Application.EnableEvents = False
            letter = Target.Value
            letter = UCase(letter)
            Target.Value = letter
    End Select
    Application.EnableEvents = True

这很好用,除非您拖动 select 多个字段进行删除。它 returns 运行-time error 13 我知道这是从字母字符串变成 " " 并且程序不能大写空白字符串。

如果字母字符串为空,我想不出如何绕过这个 Select。我花了很多时间寻找答案,但似乎找不到适用于这种情况的答案。任何输入表示赞赏。谢谢

尝试使用 if 语句来测试空字符串

Dim letter as String
Select Case Target.Column
    Case Is = 1, 3, 4, 5
        Application.EnableEvents = False
        letter = Target.Value

        If Len(letter) > 0 then
             letter = UCase(letter)
             Target.Value = letter
        Else
             Target.Value = letter
        End IF
End Select
Application.EnableEvents = True

正如我在评论中提到的,您的问题不在 UCase 行中。

试试这个:

Dim letter as String
Dim cell As Variant

Application.EnableEvents = False 
For each cell in Target
    Select Case cell.column
        Case Is = 1, 3, 4, 5
             Cell.Value = UCase(Cell.Value)
    End Select
Next cell

Application.EnableEvents = True