I was initially confused by this posting (and, who knows, may still be) but I think what we're dealing with is not rounding a number, but rather rounding hours and minutes, expressed in a decimal-like format, to the nearest one-half hour.
This is something of a multi-step process. The basics were discussed recently in this thread
To avoid confusion, I would want to separate hours and minutes with a colon rather than a period, e.g., 7 hours and 14 minutes would appear as "7:14" (a string) rather than 7.14 (a decimal). Then, in sequence:
(1) Convert string to minutes, rounding minutes to nearest half-hour
(2) Convert minutes to string expression
From the debug window it would look like this:
ConvMins = minround(StringToMinutes("7:14"

)
? convmins
420
? MinutesToString(ConvMins)
7:00
***********************************************************************************
Function MinutesToString(ByVal numMins As Integer) As String
'*******************************************
'Name: MinutesToString (Function)
'Purpose: Convert minutes into an hr:min
' string
'Inputs: ? MinutesToString(662)
'Output: 11:02
'*******************************************
Dim strHrs As String
Dim strMins As String
strHrs = Int(numMins / 60)
strMins = Format(numMins Mod 60, "00"
MinutesToString = strHrs & ":" & strMins
End Function
Function StringToMinutes(TimeStr As String) As Integer
'*******************************************
'Name: StringToMinutes (Function)
'Purpose: Convert an hr:min string to number
' of minutes (an integer)
'Inputs: ? StringToMinutes("11:02"

'Output: 662
'*******************************************
Dim numHrs As Integer, numMins As Integer
numHrs = Val(Left(TimeStr, InStr(TimeStr, ":"

- 1))
numMins = Val(Mid(TimeStr, InStr(TimeStr, ":"

+ 1))
StringToMinutes = Val((60 * numHrs) + numMins)
End Function
Function minround(numMins As Integer)
'*******************************************
'Name: minround (Function)
'Purpose: Rounds a number of minutes to
' to the nearest 1/2 hour
'*******************************************
Dim hrpart As Integer, hrperc As Single, minhold As Single
hrpart = numMins Mod 60
hrperc = hrpart / 60
minhold = Switch(hrperc < 0.25, 0, hrperc <= 0.75, 30, True, 60)
minround = 60 * Int(numMins / 60) + minhold
End Function