SendKeys的替代方法,用于使用vba在excel中激活单元格

问题描述 投票:0回答:1

例如,我使用宏将csv文件中的某些日期粘贴到excel中,并使用查找/替换将格式更改为一个excel可以识别的格式,例如从2019_10_22_08_43_23到22/10/2019 08:43:23 。在您手动选择单元格并按Enter之前,Excel不会将该文本识别为日期,因此在完成此操作之前,Excel不会在图形上正确显示日期。我当前的解决方案是使用

For Each c In cycleRange.Cells
c.Select 
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next

要在每个单元格中手动按Enter键,但这需要相当长的时间。我尝试使用TextToColumns,但这不起作用。如果我手动选择单元格范围,然后自己浏览数据菜单以单击TextToColumn,它将纠正单元格格式,但是通过宏执行此操作不会执行任何操作。

cycleRange.Select
Selection.TextToColumns Destination:=cycleRange, DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

替换每个单元格中的循环并使用Sendkey激活它们的最快方法是什么?

excel vba sendkeys
1个回答
0
投票

您想将每个单元格转换为数字。这是代码:

Dim cellValue As Double

For Each c In cycleRange.Cells
    If IsNumeric(c.Text) Then
        cellValue = c.Value
        c.Clear
        c.NumberFormat = "0.00"
        c = Val(c.Text)
        ' c = c.Text * 1
        ' c = CDbl(c.Text)
    Else
        MsgBox ("Not a number (" & c.Address & ")")
    End If
Next
© www.soinside.com 2019 - 2024. All rights reserved.