Error en un TextBox y ListBox

Hola gfellay. He creado un pequeño programita en excel y me surge un error (Se ha producido el error 2147417848(80010108) en tiempo de ejución: Error de Automatización.); Lo curioso es que ejecuto el programa y me rula un rato y de repente se cuelga.
Sospecho que es debido al último procedimiento que cree:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
On Error Resume Next
'Ocultamos el procedimiento
Application.ScreenUpdating = False
columna = (2 * ComboBox1.ListIndex + 1)
fila = ListBox1.ListIndex + 2
If KeyCode = vbKeyReturn Then
Cells(fila, columna + 1) = TextBox1
ActiveCell.Select
Selection.Copy
Sheets("Deshacer").Select
Cells(fila, columna + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Elementos actualizados").Select
End If
Application.ScreenUpdating = True
End Sub
Te explico un poco, tengo un TextBox y al presionar Enter su valor se me introduce en la celda activa. El TextBox recoge los valores de un ListBox al dar clic sobre él. Te voy a poner el código, por si a caso.
Private Sub ListBox1_Click()
On Error Resume Next
'Ocultamos el procedimiento
Application.ScreenUpdating = False
columna = (2 * ComboBox1.ListIndex + 1)
fila = ListBox1.ListIndex + 2
ruta02 = ActiveWorkbook.Path & "\" & ComboBox1.Text & "\Imágenes\" & ListBox1.Text & ".jpg"
Image1.Picture = LoadPicture(ruta02)
Cells(fila, columna + 1).Select
TextBox1.value = ActiveCell.value
'Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub
¿No se si se podría poner un código alternativo?. ¿Qué me sugieres?. Gracias por todo gfellay.

1 Respuesta

Respuesta
1
En ppio no se ve nada extraño en el código salvo que no estás controlando ningún tipo de error (que pasa si no existe algún archivo y/o cosas por el estilo). Para solucionar esto mirá la ayuda de la instrucción On Error
Hola de nuevo. He modificado un poco los controladores de error. Estos controladores de error están puestos porque no tengo todas las imágenes correspondientes. Me siguen saliendo errores, pero parece que ahora son otros errores (aunque se me sigue colgando), te dejo el código a ver si me le hechas un vistazo. Te comento un poco de que va la cosa; Tengo un UserForm con un Image donde aparecerá la imagen del combo del listbox cuando pinchamos sobre ellos, un Combobox donde nos aparece un listado cogido de la primera fila de "Elementos actualizados", un ListBox con dos columnas donde surge otro listado dependiendo de lo escogido en el combo y un textbox donde aparece el dato escogido en listbox y el cual podremos modificar.
Aparece un hoja llamada "Deshacer" eso es otro tema el cual todavía no he llegado.
El error me surge cuando cambio el combo, te subrayo donde el depurador me avisa. Los errores no les veo sentido puede pasar un rato y no aparecer ni un error.
Private Sub UserForm_Initialize()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
'Al inciar el formulario,
'seleccionamos la hoja con los datos
Sheets("Elementos actualizados").Select
'Seleccionamos la celda A1
Range("A1").Select
'Hasta que no encuentre una columna vacía
'que llene todo con datos
Do While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell.Value
'nos desplazamos una columna a la derecha
ActiveCell.Offset(0, 1).Select
Loop
Application.ScreenUpdating = True
'ajustar imagen al recuadro*******************************************
End Sub
-----------------------------------------------------------------
Private Sub ComboBox1_Change()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
Dim rngRango As Range
columna = (2 * ComboBox1.ListIndex + 1)
Sheets("Elementos actualizados").Select
Cells(2, columna).Select
Do While ActiveCell <> Empty
'nos desplazamos una columna a la derecha
ActiveCell.Offset(1, 0).Select
Loop
filaUlt = ActiveCell.Row
Set rngRango = Worksheets("Elementos actualizados").Range(Cells(2, columna), Cells(filaUlt, columna + 1))
Me.ListBox1.ColumnCount = rngRango.Columns.Count
Me.ListBox1.RowSource = rngRango.Address(external:=True)
Set rngRango = Nothing
On Error Resume Next
ruta01 = ActiveWorkbook.Path & "\" & ComboBox1.Text & "\Imágenes\" & ComboBox1.Text & ".jpg"
Image1.Picture = LoadPicture(ruta01)
'**************************************************************************************
'Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub
-----------------------------------------------------------------------
Private Sub ListBox1_Click()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
columna = (2 * ComboBox1.ListIndex + 1)
fila = ListBox1.ListIndex + 2
Cells(fila, columna + 1).Select
TextBox1.Value = ActiveCell.Value
On Error Resume Next
ruta02 = ActiveWorkbook.Path & "\" & ComboBox1.Text & "\Imágenes\" & ListBox1.Text & ".jpg"
Image1.Picture = LoadPicture(ruta02)
'Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub
-------------------------------------------------------
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Ocultamos el procedimiento
Application.ScreenUpdating = False
columna = (2 * ComboBox1.ListIndex + 1)
fila = ListBox1.ListIndex + 2
If KeyCode = vbKeyReturn Then
Cells(fila, columna + 1) = TextBox1
ActiveCell.Select
Selection.Copy
Sheets("Deshacer").Select
Cells(fila, columna + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Elementos actualizados").Select
End If
Application.ScreenUpdating = True
End Sub
---------------------------------------------------------------------
Private Sub Aceptar_Click()
Unload UserForm1
End Sub
Gracias.
Pues lo único que se me ocurre es que estés en otro libro y por eso cuando quiere seleccionar la hoja no la encuentra; probá primero colocando
ThisWorkbook. Activate
Antes de la selección de la hoja

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas