No estoy seguro de que hayas abierto el fichero de datos Numero para leerlo, ya que en la sub solo lo cierras "Close Numero".
De todas formas los valores que guardas de cada registro parecen siempre los mismos.
¿No deberia ser algo como esto?
Código vb:
Ver originalPrivate Sub EliminarRegistro()
' Verificamos que el archivo temporal no exista, si existe se elimina
If Dir("Temporal.dat") = "Temporal.dat" Then
Kill "Temporal.dat"
End If
FileTemp = FreeFile
'Abrimos y creamos un nuevo fichero temporal
Open "Temporal.dat" For Random As FileTemp Len = Len(HorasTemp)
Numero = FreeFile
'Abrimos el fichero de datos
Open "Horas.dat" For Random As Numero Len = Len(HorasTemp)
RegActual = RegActual + 1
'Se recorren los registros del archivo
For Pos = 1 To RegUltimo - 1
Get #Numero, RegActual, Horas
MsgBox "RegActual = " & RegActual
'Escribe en el archivo temporal los datos
MsgBox "RegActual = " & RegActual
Put #FileTemp, RegActualTemp, Horas
RegActual = RegActual + 1
Next
Close Numero
Close FileTemp
'Elimina el archjivo con los datos
Kill "Horas.dat"
'Renombra el archivo temporal a Datos.dat
Name "Temporal.dat" As "Horas.dat"
End Sub
Saludos