如何在excel中用vba将文本转换成数字格式

如何在excel中用vba将文本转换成数字格式,vba,excel,Vba,Excel,我在Excel中将文本值转换为数值时遇到问题。我有一张excel表格,其中有一些文本值,我想使用VBA或宏将这些文本值转换为数字。我一直想更改的范围从s2列开始到v2列,行数始终是动态的。一天我可以有10行,但第二天我可以有20000行。但是,我只想在摘要工作表激活时运行宏,换句话说,当单击摘要工作表时,我想运行宏。请帮忙。谢谢 Sub TextToNumber() ' ' TextToNumber Macro ' ' Dim sht As Worksheet Dim

我在Excel中将文本值转换为数值时遇到问题。我有一张excel表格,其中有一些文本值,我想使用VBA或宏将这些文本值转换为数字。我一直想更改的范围从s2列开始到v2列,行数始终是动态的。一天我可以有10行,但第二天我可以有20000行。但是,我只想在摘要工作表激活时运行宏,换句话说,当单击摘要工作表时,我想运行宏。请帮忙。谢谢

Sub TextToNumber()
'
' TextToNumber Macro
'

'    

        Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range

Set sht = Worksheets("Detail")
Range("AJ1").Select
Selection.Copy

Set StartCell = Range("S2:Y9")

'Find Last Row and Column
  LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
  LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

'Select Range
  sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select

  Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False

        Sheets("Summary").Select
End Sub

在列之间循环,将文本应用于列,每个列的宽度固定。如果希望在“汇总表激活时”发生这种情况,则使用该工作表的代码表的“工作表激活事件”子项

在摘要工作表的代码表中(即,右键单击“名称”选项卡,然后单击“查看代码”)

选项显式
专用子工作表_Activate()
尺寸c与长度相同

在错误恢复下一步“你真的尝试过什么吗?您可以对vba使用
TEXT
formula或
Range().NumberFormat
。我刚刚更新并添加了我到目前为止所做的工作,但在这一行选择范围sht.Range(StartCell,sht.Cells(LastRow,LastColumn))失败。Select@moe什么线路?当它失败时会发生什么?当您设置一个范围时,您需要指定工作表。您的startCell可能引用了错误的工作表,您将得到一个错误<代码>设置StartCell=sht.Range(“S2:Y9”)
为了澄清,您希望在激活摘要工作表时在详细信息工作表上运行代码。。。?
Option Explicit

Private Sub Worksheet_Activate()
    Dim c As Long
    On Error Resume Next   '<~~ necessary in case there are no values to parse
    For c = 19 To 25       '<~~ from column S to column Y
        With Worksheets("Detail")
            With .Range(.Cells(2, c), .Cells(.Rows.Count, c).End(xlUp))
                .TextToColumns Destination:=.Cells(1, 1), DataType:=xlFixedWidth, FieldInfo:=Array(0, 1)
            End With
        End With
    Next c
End Sub