Simplificar Codigo

01/11/2006 - 19:54 por vm_tapia | Informe spam
Saludos a todos:

Necesito ayuda para simplificar este codigo, que tengo en un modulo "normal":

Sub AltaClienteNuevo()
Dim Contador As Integer
Dim Avance As Single
Filas = ThisWorkbook.Worksheets("Clientes").Range("$A:$A")
UltimaFila = Application.WorksheetFunction.CountA(Filas) + 2

With ThisWorkbook.Worksheets("Clientes")
.Cells(UltimaFila, 1).Value = Val(AltaClientes.Codigo.Value)
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 2).Value = AltaClientes.NombreCorto.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 3).Value = AltaClientes.RFC.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 4).Value = AltaClientes.Nombre1.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 5).Value = AltaClientes.Nombre2.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 6).Value = AltaClientes.Nombre3.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 7).Value = AltaClientes.Direccion.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 8).Value = AltaClientes.Colonia.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 9).Value = Val(AltaClientes.CP.Value)
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 10).Value = AltaClientes.DelMun.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 11).Value = AltaClientes.EntFed.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 12).Value = AltaClientes.DirFisica.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 13).Value = AltaClientes.ColFisica.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 14).Value = Val(AltaClientes.CPFisica.Value)
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 15).Value = AltaClientes.DelMunFisica.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 16).Value = AltaClientes.EntFedFisica.Value
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
.Cells(UltimaFila, 17).Value = Val(AltaClientes.Credito.Value)
Contador = Contador + 1: Avance = Contador / 17: ActualizarBarra
Avance
End With

MsgBox " Información grabada.", vbInformation + vbOKOnly, " TICSA -
Proceso terminado"
ProgresoACL.Hide
Unload ProgresoACL
AltaClientes.Hide
Unload AltaClientes
Load Principal
Principal.Show
End Sub

Gracias por su ayuda.

Victor Manuel

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
01/11/2006 - 23:53 | Informe spam
hola, Victor Manuel !

Mostrar la cita
no se a que le llames [+/- exactamente]... 'simplificar el codigo' -?-
la siguiente propuesta [probablemente] actualizaria 'tan rapido'...
que no te daria tiempo para 'andar refrescando' la actualizacion de un 'progressbar'
[a menos que quieras que el codigo 'se detenga... por sus refrescos'] :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Sub AltaClienteNuevo()
With AltaClientes
ThisWorkbook.Worksheets("Clientes").Range("a" & Rows.Count).End(xlUp).Offset(1).Resize(, 17) Array(Val(.Codigo), .NombreCorto, .RFC, .Nombre1, .Nombre2, .Nombre3, .Direccion, .Colonia, Val(.CP), _
.DelMun, .EntFed, .DirFisica, .ColFisica, Val(.CPFisica), .DelMunFisica, .EntFedFisica, Val(.Credito))
End With
MsgBox " Informacion grabada.", vbInformation + vbOKOnly, " TICSA - Proceso terminado"
Unload AltaClientes
Principal.Show
End Sub

__ el codigo expuesto __
Mostrar la cita
#2 vm_tapia
06/11/2006 - 17:22 | Informe spam
Hector Miguel:

Mostrar la cita
Precisamente eso es lo que requiero, que actualize la barra de progreso
conforme vaya "grabando" los datos en la hoja de calculo.

Gracias.

Victor Manuel
#3 Héctor Miguel
07/11/2006 - 03:08 | Informe spam
hola, Victor Manuel !

Mostrar la cita
1) el 'detalle' esta en que de la forma sugerida en el mensaje anterior... la grabacion la hace... 'en un solo paso'
[las 17 columnas 'de golpe']... por ello es que la 'agilizacion' del codigo [pretendi que] incluia un proceso mas... 'rapido' -?-

2) si prefieres que el codigo de vaya deteniendo en cada una de las celdas y deposite 'paso a paso' los valores -?-
prueba con las siguientes modificaciones ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Sub AltaClienteNuevo()
Dim Sig As Byte, Campos
With AltaClientes
Campos = _
Array(Val(.Codigo), .NombreCorto, .RFC, .Nombre1, .Nombre2, .Nombre3, .Direccion, .Colonia, Val(.CP), _
.DelMun, .EntFed, .DirFisica, .ColFisica, Val(.CPFisica), .DelMunFisica, .EntFedFisica, Val(.Credito))
End With
With ThisWorkbook.Worksheets("Clientes").Range("a" & Rows.Count).End(xlUp).Offset(1)
For Sig = LBound(Campos) To UBound(Campos)
.Offset(, Sig) = Campos(Sig)
ActualizarBarra (Sig + 1) / UBound(Campos)
Next
End With
MsgBox " Informacion grabada.", vbInformation + vbOKOnly, " TICSA - Proceso terminado"
Unload ProgresoACL
Unload AltaClientes
Principal.Show
End Sub
#4 vm_tapia
07/11/2006 - 18:11 | Informe spam
Hector Miguel:

Muchas Gracias por compartir tus conocimientos. cada "consulta" que me
respondes me dejas impresionado y gracias a ti [y a todos los demas] cada dia
aprendo mas.

Saludos

Victor Manuel.
Ads by Google
Search Busqueda sugerida