在VBA中定制function

我有几分钟的电影清单和他们的时间。 我希望创build一个自定义的函数,用户可以select一个或多个单元格的持续时间范围。 该函数将持续时间以分钟为单位转换为“x小时和y分钟forms”。
我已经创build了以下function,但是一次只能看到一个以上的单元格引用。

Function Saikatrealtime(cell As Range) As String Dim r As String r = Int(cell.Value / 60) & " hours " & " & " & cell.Value Mod 60 & " minutes " Saikatrealtime = r End Function Sub realtimesof_film() Dim rng As Range Dim t As String s1.Activate Set rng = Application.InputBox(prompt:=" enter range ", Type:=8) t = Saikatrealtime(rng) rng.Offset(0, 2).Value = t End Sub 

每当我给rng 2个或更多的单元格的引用,它会给出错误types的不匹配在行

 r = Int(cell.Value / 60) & " hours " & " & " & cell.Value Mod 60 & " minutes " 

任何人都可以请告诉我如何修改代码,以便该function运行跨多个单元格引用rng

除非将公式更改为返回值数组,否则必须修改子程序代码以引用多单元格范围。 在范围内添加一个循环的单元格将工作。 将其添加到您的子程序中:

 Dim Cell As Range For Each Cell In rng.Cells Cell.Offset(0, 2).Value = Saikatrealtime(Cell) Next Cell 

不需要自定义函数Saikatrealtime 。 您可以使用Format来代替。 关键是你必须在文本中使用反斜杠\

 Sub realtimesof_film() Dim rng As Range Dim c As Range Set rng = Application.InputBox(prompt:=" enter range ", Type:=8) For Each c In rng c.Offset(0, 2).Value = Format(c.Value, "HH \hour\s & MM \mi\nute\s ") Next End Sub