Proceso lento de modificación de datos en excel
Hola, muy buen dia,he acudido a usted porque me he atorado en un formulario, intente varias cosas pero aun no logro que me funcione como requiero.El problema es el siguiente:
Tengo una hoja en excel "ENTRADAS", en ella existen 3 formularios; el de entradas, el de búsqueda de modificación y el de modificación.He creado el código que me permite ingresar datos en mi hoja, también para que me pueda modificar los datos ya ingresados, pero el problema es que me da resultados bastante lentos, esto tal vez por la amplia base de datos que tengo en mi hoja,lo que busco es su ayuda para que me pueda orientar en el código, tal vez este haciendo algo mal o este poniendo código excesivo, la verdad aun no soy muy diestro en esto de la programación VBA, cualquier sugerencia será agradecida.Muchas gracias.
Aquí anexo el código de mis formularios:
1.-búsqueda para la modificación:
Private Sub CommandButton1_Click()
If Me.ListBox1.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "Admón R.F"
Else
UserForm20.Hide
UserForm22.show
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub CommandButton3_Click()
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "Admón R.F".)
If Pregunta <> vbNo Then
Fila = Me.ListBox1.ListIndex + 9
Rows(Fila).Delete
Application.ScreenUpdating = True
End If
End Sub
Private Sub ListBox1_Click()
Fila = Me.ListBox1.ListIndex + 9
For i = 1 To 10
Cells(Fila, 1).Activate
Next i
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
'Dar formato al ListBox y traer datos de la tabla
With ListBox1
.ColumnCount = 10
.ColumnWidths = "60 pt;60 pt;70 pt"
.ColumnHeads = True
End With
ListBox1.RowSource = "TABLAENTRADAS"
End Sub
2.-Formulario de modificación:
Private Sub CommandButton1_Click()
If Me.TextBox1.Text = "" Then MsgBox ("Ingrese Código de Entrada"): Exit Sub
If Me.TextBox2.Text = "" Then MsgBox ("Ingrese Color de Entrada"): Exit Sub
If Me.TextBox3.Text = "" Then MsgBox ("Ingrese Descripción de Entrada"): Exit Sub
If Me.TextBox4.Text = "" Then MsgBox ("Ingrese Cantidad de Entrada"): Exit Sub
If Me.TextBox6.Text = "" Then MsgBox ("Ingrese Fecha de Entrada"): Exit Sub
If Me.TextBox7.Text = "" Then MsgBox ("Ingrese Nombre de Recepcionista"): Exit Sub
For i = 1 To 4
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
Next i
For y = 6 To 8
ActiveCell.Offset(0, y - 1).Value = Me.Controls("TextBox" & y).Value
Next y
For Each celda In Range("D1:D" & Range("D" & Rows.Count).End(xlUp).Row)
celda.Value = Replace(celda.Value, ",", ".")
Next
End Sub
Private Sub CommandButton2_Click()
UserForm22.Hide
End Sub
Private Sub TextBox4_Change()
TextBox4 = Replace(TextBox4, ",", ".")
TextBox4.Value = Format(TextBox4, "#,##0.00")
If Not IsNumeric(TextBox4.Value) And TextBox4.Value <> vbNullString Then
MsgBox "Ingresar Solo valores numéricos!!!"
TextBox4.Value = vbNullString
End If
End Sub
Private Sub TextBox6_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'seleccionamos de acuerdo a la longitud de los datos
'que estamos ingresando
Select Case Len(TextBox6.Value)
'len = largo o longitud
Case 2
'si el textbox tiene 2 caracteres
TextBox6.Value = TextBox6.Value & "/"
'se colocará automáticamente una "/" luego del segundo carácter
Case 5
'si el textbox tiene 5 caracteres
TextBox6.Value = TextBox6.Value & "/"
'se colocará automáticamente una "/" luego del quinto carácter
End Select
End Sub
Private Sub UserForm_Activate()
'Llenar los cuadro de texto con los datos del registro elegido
For y = 6 To 8
Me.Controls("TextBox" & y).Value = ActiveCell.Offset(0, y - 1).Value
Next y
End Sub
Private Sub UserForm_Initialize()
'Llenar los cuadro de texto con los datos del registro elegido
For i = 1 To 4
Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub