我有一份电影列表及其持续时间,以分钟为单位。我希望创建一个自定义函数,用户可以选择持续时间范围,即一个或多个单元格。该函数将持续时间以分钟为单位转换为" x小时和分钟形式"。
我创建了以下函数,但它似乎一次不超过1个单元格引用。
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个或更多个单元格引用时,它会在行处给出错误类型不匹配
r = Int(cell.Value / 60) & " hours " & " & " & cell.Value Mod 60 & " minutes "
任何人都可以告诉我如何修改代码,以便该函数在赋予rng
的多个单元格引用中运行?
答案 0 :(得分:1)
除非您更改公式以返回值数组,否则您必须修改子例程代码以引用多单元格范围。添加范围内的单元格循环将起作用。将其添加到子例程中:
Dim Cell As Range
For Each Cell In rng.Cells
Cell.Offset(0, 2).Value = Saikatrealtime(Cell)
Next Cell
答案 1 :(得分:0)
不需要自定义函数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