将动态范围格式化为文本

时间:2016-03-31 15:21:28

标签: excel vba excel-vba

我正在编写一个makro,在加载到数据库之前将所有非数字单元格格式化为文本。我有一条线,我不知道有什么问题。我的VBA技能很差。我得到运行时错误'424'。

Sub formatAllCellsAsText()

    Dim wsTemp As Worksheet
    Dim LastRow As Long
    Dim LastColumn As Long
    Dim StartCell As Range
    For sht = 3 To Worksheets.Count
        Set wsTemp = Sheets(sht)
        Set StartCell = Range("A4")
        LastRow = wsTemp.Range("A1").CurrentRegion.Rows.Count
        LastColumn = wsTemp.Range("A1").CurrentRegion.Columns.Count
        For Each Cell In wsTemp.Range(StartCell, wsTemp.Cells(LastRow, LastColumn)).Cells

        If Not IsEmpty(Cell.Value) And IsNumeric(Cell.Value) And InStr(wsTemp.Cells(1, Cell.Column), "Client ID") <= 0 Then

            Dim Temp As Double
            Temp = Cell.Value
            Cell.ClearContents
            Cell.NumberFormat = "@"
            Cell.Value = CStr(Temp)
          End If
        Next
    Next sht
End Sub

2 个答案:

答案 0 :(得分:1)

Set StartCell = Range("A4")

应该是

Set StartCell = wsTemp.Range("A4")

答案 1 :(得分:0)

只是想总结一下,因为我可能已经找到了这个问题。 在我发布的第一个代码中,我没有设置我后来提到的Cell变量。我认为Cell对于VBA来说是不言自明的。