我正在尝试取一个分钟值(例如 3.83 分钟)并将其转换为 hh:mm:ss 时间格式(我知道是 0:03:50)
出于某种原因,从宏记录的 .NumberFormat 不起作用并给我一个#VALUE!错误。
Function MINtoHMS(MIN)
MIN = MIN / (24 * 60)
MINtoHMS = MIN
MINtoHMS.NumberFormat = "[h]:mm:ss;@"
End Function
我正在尝试取一个分钟值(例如 3.83 分钟)并将其转换为 hh:mm:ss 时间格式(我知道是 0:03:50)
出于某种原因,从宏记录的 .NumberFormat 不起作用并给我一个#VALUE!错误。
Function MINtoHMS(MIN)
MIN = MIN / (24 * 60)
MINtoHMS = MIN
MINtoHMS.NumberFormat = "[h]:mm:ss;@"
End Function
-编辑-用作加载项
Excel 插件:http ://www.filedropper.com/mintohms
使用以下代码创建一个名为 SheetChangeHandler 的类模块:
Option Explicit
Private WithEvents App As Application
Private Sub Class_Initialize()
Set App = Application
End Sub
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Err
If InStr(Target.Formula, "=MINtoHMS") Then
Target.NumberFormat = "hh:mm:ss"
End If
On Error GoTo 0
Exit Sub
Err:
End Sub
使用以下代码添加模块:
Option Explicit
Public MySheetHandler As SheetChangeHandler
Sub Auto_Open()
Set MySheetHandler = New SheetChangeHandler
End Sub
Function MINtoHMS(MIN)
MIN = MIN / (24 * 60)
MINtoHMS = MIN
End Function
单击文件 > 另存为 > Excel 97-2003 加载项 (*.xla) > 保存
单击文件 > 选项 > 加载项
单击管理旁边的“开始...”:Excel 加载项
选中刚刚创建的加载项旁边的框
点击“确定”
首先,您不能通过公式更改 Excel 单元格的格式。单元格的公式只能分配给单元格(或范围)的值。
其次,你真的应该在你的函数中声明一些数据类型,这将防止许多神秘的错误和其他奇怪的结果。
这样的事情应该没问题:
Function MINtoHMS(MIN As Double) As Date
MIN = MIN / (24 * 60)
MINtoHMS = MIN
End Function
绝对控制通过函数看到的内容的唯一方法是返回格式化的字符串,正如 Ripster 在他/她的回答中所显示的那样。
试试以下这些方法。
DAYS = Format(Int([Expr3]/86400), "00") - will correctly display days
HOURS = Format(Int(([Expr3])/3600) - ((Int([Expr3]*86400)/3600), "00") - DOES NOT CORRECTLY display correct hours
HOURS = Format(Int([Expr3]/3600),"00") - What will display hours
MINUTES = Int(([Expr3]-(Int([Expr3]/3600)*3600))/60)
SECONDS = Format((([Expr3] Mod 60)),"00")
dTotalSeconds = DateDiff("S", Now(), dChristmasDate)
iDays = Int(dTotalSeconds / 86400)
iHours = Int((dTotalSeconds Mod 86400) / 3600)
iMinutes = Int(((dTotalSeconds Mod 86400) Mod 3600) / 60)
iSeconds = ((dTotalSeconds Mod 86400) Mod 3600) Mod 60
' 通过使用此函数,您可以将分钟转换为 hh:mm:ss
Public Function HMStoSec(strHMS As String) As Long
HMStoSec = Split(strHMS, ":")(0) * 3600 + _
Split(strHMS, ":")(1) * 60 + _
Split(strHMS, ":")(2)
End Function