Hola a todos soy nuevo en esto de visual basic 6.0 espero puedan ayudarme

Bueno el problema es que una vez ingresados los datos de varias personas almacenas y deseas borrar algunos registros como el primer registro por ejemplo (que es mi problema)y le doy clic en el boton anterior se supone que me deberia enviar a otro registro que no se encuentre borrado...que segun yo seria el ultimo registro ingresado (claro si este no esta borrado). y me aparece Error '9' en tiempo de ejecucion El subindice esta fuera del intervalo

AKI LES DEJO EL CODIGO
Código:
  1. Option Explicit 'Obliga a visual Basic a reconocer solo las variables que esten en declaradas
  2. Private Type Telefono
  3. Nombre As String
  4. Direccion As String
  5. Telefono As String
  6. Nota As String
  7. Borrado As Boolean
  8. End Type
  9. Dim Telefonos() As Telefono, N As Integer, Actual As Integer
  10. Dim Editar As Boolean 'Esta variable se pone a True cuando se Edita un registro
  11.  
  12. 'este procedimiento habilita y desabilita cajas de texto
  13. 'si se quiere habilitar o desabilitar botones se cambia la palabra textbox por commandbutton , etc..
  14. Private Sub activar_desactivar_cajas(Activar As Boolean)
  15.   Dim control As Variant
  16.  
  17.   For Each control In Controls
  18.     If TypeOf control Is TextBox Then
  19.       control.Enabled = Activar
  20.     End If
  21.   Next control
  22. End Sub
  23.  
  24. Private Sub activar_desactivar_Botones(Activar As Boolean)
  25.   Dim control As Variant
  26.  
  27.   For Each control In Controls
  28.     If TypeOf control Is CommandButton Then
  29.       control.Enabled = Activar
  30.     End If
  31.   Next control
  32. End Sub
  33.  
  34. Private Sub Limpiar_cajas()
  35.   Dim control As Variant
  36.  
  37.   For Each control In Controls
  38.     If TypeOf control Is TextBox Then
  39.       control.Text = ""
  40.     End If
  41.   Next control
  42. End Sub
  43.  
  44. Private Sub cmdanterior_Click()
  45.   If N = 0 Then Exit Sub
  46.   Actual = Actual - 1
  47.   If Actual = 0 Then Exit Sub
  48.   If Actual < 1 Then
  49.     Actual = 1
  50.   End If
  51.  
  52.   While Telefonos(Actual).Borrado = True
  53.    Actual = Actual - 1
  54.   Wend
  55.   CargarDatos
  56.  
  57. End Sub
  58.  
  59. Private Sub cmdborrar_Click()
  60.  Dim Respuesta As Integer
  61.   Respuesta = MsgBox("¿Esta seguro de querer borrar este registro?", vbQuestion + vbYesNo, "Borrar")
  62.   If Respuesta = vbYes Then
  63.    Telefonos(Actual).Borrado = True
  64.   End If
  65. End Sub
  66.  
  67. Private Sub cmdbuscar_Click()
  68.  Dim Buscado As Integer, NombreBuscado As String
  69.   NombreBuscado = InputBox("Ingrese el Nombre a buscar:", "Buscar")
  70.   For Buscado = 1 To N
  71.    If Telefonos(Buscado).Nombre Like NombreBuscado Then
  72.     Actual = Buscado
  73.      If Telefonos(Actual).Borrado = True Then
  74.       MsgBox "Este registro se ha borrado.", vbCritical, "Buscar"
  75.      Exit Sub
  76.      End If
  77.     CargarDatos
  78.     Exit For
  79.    End If
  80.   Next Buscado
  81.   If Buscado > N Then
  82.    MsgBox "No se encontro el registro con este nombre.", vbExclamation, "Buscar"
  83.   End If
  84. End Sub
  85.  
  86. Private Sub cmdcancelar_Click()
  87.   If Editar = False Then
  88.     If N > 0 Then
  89.       Actual = 1
  90.     End If
  91.   End If
  92.   activar_desactivar_cajas False 'activar las cajas de textos
  93.  If N = 1 Then
  94.     activar_desactivar_Botones False
  95.     cmdnuevo.Enabled = True
  96.     cmdeditar.Enabled = True
  97.     cmdborrar.Enabled = True
  98.   Else
  99.     activar_desactivar_Botones True
  100.   End If
  101.   cmdgrabar.Enabled = False
  102.   cmdcancelar.Enabled = False
  103.   Editar = False
  104.   If N = 0 Then
  105.     Limpiar_cajas
  106.     activar_desactivar_Botones False
  107.     cmdnuevo.Enabled = True
  108.     Exit Sub
  109.   End If
  110.   CargarDatos
  111. End Sub
  112.  
  113. Private Sub cmdeditar_Click()
  114. activar_desactivar_cajas True 'activar las cajas de textos
  115. activar_desactivar_Botones False
  116. cmdgrabar.Enabled = True
  117. cmdcancelar.Enabled = True
  118. Editar = True
  119. Txtnombre.SetFocus
  120. End Sub
  121.  
  122. Private Sub cmdfinal_Click()
  123.   If N = 0 Then Exit Sub
  124.   Actual = N
  125.   CargarDatos
  126. End Sub
  127.  
  128. Private Sub cmdgrabar_Click()
  129. If Editar = True Then 'Se esta editando el registro
  130.  With Telefonos(Actual)
  131.     .Nombre = Txtnombre.Text
  132.     .Direccion = txtDireccion.Text
  133.     .Telefono = txttelefono.Text
  134.     .Nota = txtnotas.Text
  135.   End With
  136.   Editar = False
  137. Else 'Es un nuevo registro
  138.  N = N + 1
  139.   ReDim Preserve Telefonos(1 To N)
  140.   With Telefonos(N)
  141.     .Nombre = Txtnombre.Text
  142.     .Direccion = txtDireccion.Text
  143.     .Telefono = txttelefono.Text
  144.     .Nota = txtnotas.Text
  145.   End With
  146.   Actual = N
  147. End If
  148. activar_desactivar_cajas False 'activar las cajas de textos
  149. If N = 1 Then
  150.   activar_desactivar_Botones False
  151.   cmdeditar.Enabled = True
  152.   cmdborrar.Enabled = True
  153.   cmdnuevo.Enabled = True
  154. Else 'Hay mas de un registro
  155.  activar_desactivar_Botones True
  156. End If
  157. cmdgrabar.Enabled = False
  158. cmdcancelar.Enabled = False
  159. End Sub
  160.  
  161. Private Sub cmdnuevo_Click()
  162. activar_desactivar_cajas True 'activar las cajas de textos
  163. activar_desactivar_Botones False
  164. cmdgrabar.Enabled = True
  165. cmdcancelar.Enabled = True
  166. Txtnombre.SetFocus
  167. Limpiar_cajas
  168. End Sub
  169.  
  170. Private Sub CargarDatos() 'LLenar las cajas con los datos corespondientes
  171. With Telefonos(Actual)
  172. Txtnombre.Text = .Nombre
  173. txtDireccion.Text = .Direccion
  174. txttelefono.Text = .Telefono
  175. txtnotas.Text = .Nota
  176. End With
  177. End Sub
  178.  
  179. Private Sub cminicio_Click()
  180.  If N = 0 Then Exit Sub 'No hay registros guardados
  181.  Actual = 1
  182.  While Telefonos(Actual).Borrado = True
  183.    Actual = Actual + 1
  184.  Wend
  185.  CargarDatos
  186. End Sub
  187.  
  188. Private Sub CmdSiguiente_Click()
  189.   If N = 0 Then Exit Sub
  190.   Actual = Actual + 1
  191.   If Actual > N Then
  192.   Actual = N
  193.   End If
  194.   CargarDatos
  195. End Sub
  196.  
  197. Private Sub Form_Load()
  198. activar_desactivar_cajas False
  199. End Sub
  200.  
  201. Private Sub txtDireccion_GotFocus()
  202. txtDireccion.BackColor = &H80000003
  203. End Sub
  204.  
  205. Private Sub txtDireccion_LostFocus()
  206. txtDireccion.BackColor = &H8000000E
  207. End Sub
  208.  
  209. Private Sub txtnombre_GotFocus()
  210.  Txtnombre.BackColor = &H80000003
  211. End Sub
  212.  
  213. Private Sub Txtnombre_KeyPress(KeyAscii As Integer)
  214. If KeyAscii = vbKeyReturn Then
  215.   txtDireccion.SetFocus
  216.   End If
  217.   End Sub
  218.  
  219.   Private Sub Txtdireccion_KeyPress(KeyAscii As Integer)
  220. If KeyAscii = vbKeyReturn Then
  221.   txttelefono.SetFocus
  222.   End If
  223.   End Sub
  224.  
  225.   Private Sub Txttelefono_KeyPress(KeyAscii As Integer)
  226. If KeyAscii = vbKeyReturn Then
  227.   txtnotas.SetFocus
  228.   End If
  229.   End Sub
  230.  
  231.   Private Sub Txtnotas_KeyPress(KeyAscii As Integer)
  232. If KeyAscii = vbKeyReturn Then
  233.   cmdgrabar.SetFocus
  234.   End If
  235.   End Sub
  236.  
  237. Private Sub txtnombre_LostFocus()
  238.  Txtnombre.BackColor = &H8000000E
  239. End Sub
  240.  
  241. Private Sub txtnotas_LostFocus()
  242. txtnotas.BackColor = &H8000000E
  243. End Sub
  244.  
  245. Private Sub txttelefono_GotFocus()
  246. txttelefono.BackColor = &H80000003
  247. End Sub
  248.  
  249. Private Sub txttelefono_LostFocus()
  250. txttelefono.BackColor = &H8000000E
  251. End Sub
  252.  
  253. Private Sub txtnotas_GotFocus()
  254. txtnotas.BackColor = &H80000003
  255. End Sub