excel - VBA 以编程方式修复 "errored"单元格?

标签 excel vba date

我在约会方面遇到了一些麻烦。我读过很多相关内容,日期格式很奇怪似乎很常见。

我的情况是,当我将 xlsx 文件或 csv 文件中的数据导入我自己的工作簿(通过 vba 加载宏)时,日期会被格式化为文本。加载宏只是打开所需的文件,将所有行复制并粘贴到当前书籍中,然后关闭该文件。

我检查了我的源文件,所有日期的格式均正确 - dd/mm/yyyy 并在源 xlsx 和 csv 文件中正确显示。当我输入数据时,日期会变成文本格式,您看到的只是:40246,实际上是:09/03/2010

我检查了我的文件,它们都是按日期存储的。我尝试将格式设置为数字、文本、特殊、所有变体,然后改回日期,但没有任何反应。

该列中的每个单元格(只有 1 列)都有绿色错误指示器,并且信息显示“此单元格格式为文本或前面带有撇号”,但事实并非如此。我确保我的 Excel 或源代码中没有撇号。但是,如果我在该错误上单击“转换为数字”,然后将格式更改回最新格式,它就会修复。

我想在代码中执行此操作,获取整个列,转换为数字,然后更改为日期。但我似乎不知道该怎么做。

我尝试更改格式,例如:ActiveCell.numberformat = "0.00"(我只是尝试使用 1 个单元格进行练习),但这并没有清除错误,当我更改时到现在为止什么也没发生。我尝试录制一个在错误框中单击“转换为数字”的宏,但代码中没有任何内容。有没有修复错误单元格的vba命令?我知道有一个 iserror (或类似的函数)来判断单元格是否有错误,但我不知道使用什么命令来实际修复错误。

有什么建议吗?

如果我突出显示整个列,然后单击错误中的“转换为数字”,它会转换整个列,此时我可以转换为修复它的日期,这就是我希望宏执行的操作..我不想每次用户遇到这个问题时都必须跑过去解决它(而且我不相信我可以让他们自己做,这确实是最简单的)

enter image description here

注意那个绿色的小指示器,上面写着“转换为数字”,我可以执行此操作,然后将格式更改为日期,但奇怪的是,当我单击“转换为数字”时,录制的宏中没有代码。

编辑

加载代码:

openfnameandpath = Application.GetOpenFilename(Title:="Select File To Be Opened") 'get file path
        dim openfnameandpath as string
        dim loadworkbook as workbook
        dim numrows as long, numcols as long

        openfnameandpath = Application.GetOpenFilename(Title:="Select File To Be Opened") 'get file path

        Set loadWorkbook = Workbooks.Open(openfnameandpath)

        loadWorkbook.Sheets(1).Activate 'in case a different sheet was active
        numrows = Cells.find("*", [A1], , , xlByRows, xlPrevious).Row
        numcols = Cells.find("*", [A1], , , xlByColumns, xlPrevious).Column

        loadWorkbook.Sheets(1).Range("A1", Cells(numRows, numCols)).Copy   Sheets(1).Cells(1, 1) =

        loadWorkbook.Close False

我把问题缩小到这个程度,问题仍然存在。

最佳答案

选择您的单元格并运行:

Sub DateFixer()
    Dim r As Range, d As Date, v As String
    For Each r In Selection
        v = r.Text
        d = CDate(CLng(v))
        r.Clear
        r.NumberFormat = "dd/mm/yyyy"
        r.Value = d
    Next r
End Sub

关于excel - VBA 以编程方式修复 "errored"单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689974/

相关文章:

ms-access - Excel 工作表名称不允许使用 VBA - DAO 将数据导入 Access

excel - 如果表列中没有数据则显示消息框的代码

c# - 将 .NET DateTime.Ticks 属性转换为 Objective-C 中的日期

java - JPA在MySQL数据库中保存错误的日期

Java/JavaScript 日期 : Is this true?

excel - 列没有不同值时的运行时错误 13

Python - 对试图理解的人的基本解释(CSV,Excel)

vba - 在 Excel-VBA 中创建公共(public)对象的最佳实践?

Excel Yield 函数的.NET 实现

excel - 创建一个可重复的数据透视表,加载到同一个工作表上