使用和操作[h]:mm:ss自定义excel格式的问题

时间:2018-02-22 09:32:28

标签: excel vba excel-vba

我遇到一个小问题,它有一个非常简单的修复,我似乎无法找到/做。

我有一些[h]:mm:ss格式的数据,让我们说" 23:34:54"在电子表格的单元格中。然后我想从中减去一个动态值,让我们说" 5:00:00"

我试图找到一种方法对此进行编码,目前我的代码如下

TimeCheck = Cells(NewLastRowNumber + 4, 2) - Cells(NewLastRowNumber, 2)
TimeCheck = Application.Text(TimeCheck, "[h]:mm:ss")

hTime = Application.Text("5:00:00", "[h]:mm:ss")

TimeTest= hTime - TimeCheck

然而,当我运行代码时,我总是在TestTime行上得到一个Type MisMatch Error。我相信这取决于我如何设法以正确的格式获取数据。时间检查的值始终是正确的

我也试过TimeCheck = Format(TimeCheck, "[h]:mm:ss"),但我无法让它发挥作用。

您可以提供的任何帮助都会得到很大的帮助。谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用DateAdd从给定时间减去5小时,如下所示,这将从单元格A1中获取数据,将其转换为日期/时间,然后减去300分钟,然后将值写入B2:

Dim ws As Worksheet: Set ws = Sheets("Sheet1")
ws.Range("B2") = DateAdd("n", -300, CDate(ws.Range("A1")))

答案 1 :(得分:0)

Run-time error '13': Type mismatch表示您正在尝试在两个字符串之间执行算术运算。

在您的代码中:

•此行生成TimeCheck作为数据类型double

    TimeCheck = Cells(NewLastRowNumber + 4, 2) - Cells(NewLastRowNumber, 2)

•该行使TimeCheck为数据类型字符串

    TimeCheck = Application.Text(TimeCheck, "[h]:mm:ss")

•此行生成hTime作为数据类型字符串

    hTime = Application.Text("5:00:00", "[h]:mm:ss")

•该行尝试在两个“字符串”

之间应用算术运算符
    TimeTest= hTime - TimeCheck

首先执行算术运算,然后将结果转换为字符串 试试这个:

    TimeCheck = Cells(NewLastRowNumber + 4, 2) - Cells(NewLastRowNumber, 2)
    hTime = CDbl(TimeSerial(5, 0, 0))
    TimeTest = hTime - TimeCheck
    TimeTest = Application.Text(TimeTest, "[h]:mm:ss")