Excel VBA - 使用公式将列中的所有选定单元格大写

时间:2016-07-15 16:48:33

标签: excel vba excel-vba

我在下面的主题中使用了Siddharth Rout中的代码来大写所选列,但遇到了错误' 13' MISMATCH当我在一个列上使用它时,其中的单元格具有某些范围内的公式。

Excel VBA - Capitalizing all selected cells in column on double click

以下是处理来自上述链接的非基于公式的列数据的代码:

   Sub ChangeToUpper()
    Dim rng As Range

    '~~> Check if what the user selected is a valid range
    If TypeName(Selection) <> "Range" Then
        MsgBox "Select a range first."
        Exit Sub
    End If

    Set rng = Selection

    rng = WorksheetFunction.Transpose(Split(UCase(Join( _
          WorksheetFunction.Transpose(rng), vbBack)), vbBack))
End Sub

我搜索了论坛,但没有找到与此相关的细节。所以我用谷歌搜索了,而且埃塞尔先生有这个代码,但仍然给出了错误&#39;当我清除了错误信息时,所有内容都被大写了。有没有办法消除这个错误?

以下是Mr.Excel的代码:

Sub MyUpperCase()

    Application.ScreenUpdating = False

    Dim cell As Range
    For Each cell In Range("$A$1:" & Range("$A$1").SpecialCells(xlLastCell).Address)
        If Len(cell) > 0 Then cell = UCase(cell)
    Next cell

    Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:1)

检查Cell是否有公式和/或错误,如果是,则忽略。

   Sub MyUpperCase()

    Application.ScreenUpdating = False

    Dim cell As Range
    For Each cell In Range("$A$1:" & Range("$A$1").SpecialCells(xlLastCell).Address)

      '/ Exclude errors
      If Not IsError(cell) Then
        If Len(cell) > 0 And Not cell.HasFormula Then
          cell = UCase(cell)
        End If
     End If
    Next cell

    Application.ScreenUpdating = True
End Sub