我遇到一个小问题,它有一个非常简单的修复,我似乎无法找到/做。
我有一些[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")
,但我无法让它发挥作用。
您可以提供的任何帮助都会得到很大的帮助。谢谢
答案 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")