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 !

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



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 __
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 " Informacion grabada.", vbInformation + vbOKOnly, " TICSA - Proceso terminado"
ProgresoACL.Hide
Unload ProgresoACL
AltaClientes.Hide
Unload AltaClientes
Load Principal
Principal.Show
End Sub
Respuesta Responder a este mensaje
#2 vm_tapia
06/11/2006 - 17:22 | Informe spam
Hector Miguel:

[a menos que quieras que el codigo 'se detenga... por sus refrescos'] :))



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
Respuesta Responder a este mensaje
#3 Héctor Miguel
07/11/2006 - 03:08 | Informe spam
hola, Victor Manuel !

[a menos que quieras que el codigo 'se detenga... por sus refrescos'] :))



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



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
Respuesta Responder a este mensaje
#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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida