me la pusieron en chino. No se interpretar el código VBA

15/11/2005 - 23:16 por Luis Fernando Vargas Díaz | Informe spam
Buenas tardes a todos los buenos compañeros de este foro. Tengo un libro de
excel con varias hojas, a saber: Platino, Corriente, Transf, MovSICC,
MovContaPT y MovContaCC.

Ahora, este libro tiene una macro con el siguiente código VBA:

Dim DirCP As String
Dim DirCC As String
Dim Cont As Integer
Dim Existe As Boolean

Sub BuscarContrapartida()
Dim Fecha As Date
Dim Numero As Long
Dim Monto As Double
Sheets(1).Select
Range("IniPlat").Activate
DirCC = "A2"
Cont = 0
Do While ActiveCell.Value <> ""
Existe = False
DirCP = ActiveCell.Address
Fecha = ActiveCell.Value
Numero = ActiveCell.Offset(0, 1).Value
Monto = ActiveCell.Offset(0, 3).Value
Encuentra Fecha, Numero, Monto
If Existe Then ActiveCell.Offset(0, 4).Value = Cont
ActiveCell.Offset(1).Activate
Loop
End Sub

Sub Encuentra(F As Date, N As Long, M As Double)
Sheets(2).Select
Range(DirCC).Activate
Do While ActiveCell.Value <= F And ActiveCell.Value <> ""
If ActiveCell.Value = F And ActiveCell.Offset(0, 1).Value = N And
ActiveCell.Offset(0, 3).Value = (M * (-1)) Then
Cont = Cont + 1
ActiveCell.Offset(0, 4).Value = Cont
Existe = True
Exit Do
End If
ActiveCell.Offset(1).Activate
Loop
Do While ActiveCell.Value >= F
ActiveCell.Offset(-1).Activate
Loop
DirCC = ActiveCell.Address
Sheets(1).Select
Range(DirCP).Activate
End Sub

Alguien me puede explicar en castellano que hace el código???

Gracias y saludos a todos
 

Leer las respuestas

#1 Héctor Miguel
17/11/2005 - 04:51 | Informe spam
hola, Luis Fernando !

... Tengo un libro... con varias hojas... este libro tiene una macro con el siguiente codigo VBA: [...]
Alguien me puede explicar en castellano que hace el codigo?



[creo que] lo correcto es preguntar a quien hubiera desarrollado el codigo [en caso de que te lo hubieran 'heredado'] :))
sobre todo... si no esta 'haciendo' lo que se espera que debiera hacer -?-

si lo unico que necesitas es 'conocer' lo que la macro le esta 'diciendo' a excel que haga...
te paso al final la macro con 'sus' lineas de comentarios :))

saludos,
hector.

' se declaran unas variables "globales" para usar en las macros cuyo proposito es...
Dim DirCP As String ' establecer la direccion de la celda donde se encuentra la "contra-partida"
Dim DirCC As String ' establecer la direccion de una celda "puente" [o lo que sea que signifique 'CC' :))
Dim Cont As Integer ' iniciar un "contador" para las veces que se encuentra el dato coincidente
Dim Existe As Boolean ' una variabla que devuelve verdadero/falso si se encuentra [o no] 'el dato'

Sub BuscarContrapartida()
' se definen variables de este procedimiento...
Dim Fecha As Date ' una fecha
Dim Numero As Long' un numero
Dim Monto As Double ' un importe
Sheets(1).Select ' se selecciona la primer hoja del libro y...
Range("IniPlat").Activate ' se activa un rango [probablemente de una sola celda] que se llama "IniPlat"
DirCC = "A2" ' se establece una direccion de 'celda de partida' ->$A$2<-
Cont = 0 ' se inicializa el 'contador' en ceros
Do While ActiveCell.Value <> "" ' inicia un bucle hasta encontrar una celda 'vacia'
Existe = False ' se inicializa la variable como 'No encontrado'
DirCP = ActiveCell.Address ' se toma la direccion de la celda activa
Fecha = ActiveCell.Value ' se toma la fecha [que esta en la celda activa]
Numero = ActiveCell.Offset(0, 1).Value ' se toma el numero una columna a la derecha de la celda activa
Monto = ActiveCell.Offset(0, 3).Value ' se toma el monto dos columnas a la derecha de la celda activa
Encuentra Fecha, Numero, Monto ' se ejectua la macro pasandole las variables anteriores
If Existe Then ActiveCell.Offset(0, 4).Value = Cont ' si el dato 'existe'... se pone la cuenta acumulada del 'contador'
ActiveCell.Offset(1).Activate ' se activa la siguiente celda [una fila abajo] para continuar con el bucle
Loop ' se contunua con el bucle [hasta encontrar una celda 'vacia'
End Sub

Sub Encuentra(F As Date, N As Long, M As Double)
Sheets(2).Select ' se activa la hoja que se encuentra en la posicion #2 en el conjunto de hojas en el libro
Range(DirCC).Activate ' se activa la celda... tomando la 'direccion' de la variable en la macro anterior
Do While ActiveCell.Value <= F And ActiveCell.Value <> "" ' se inicia un bucle 'mientras' la fecha sea <= que la fecha 'solicitada'
If ActiveCell.Value = F And ActiveCell.Offset(0, 1).Value = N And ActiveCell.Offset(0, 3).Value = (M * (-1)) Then ' si los datos coinciden...
Cont = Cont + 1 ' se va incrementando 'el contador'
ActiveCell.Offset(0, 4).Value = Cont ' se pone el contador cuatro columnas a la derecha de la celda 'activa' en la segunda hoja
Existe = True ' se establece la variable como 'Si existe'
Exit Do ' se sale de este primer bucle
End If ' fin de la condicion 'si los datos coinciden...'
ActiveCell.Offset(1).Activate ' se activa la siguiente celda [una fila abajo] en la segunda hoja
Loop ' o... se continua con el bucle [hasta encontrar una celda vacia o una fecha > que la 'solicitada']
Do While ActiveCell.Value >= F ' se inicia OTRO bucle para 'regresar' a la primer celda con una fecha < que la 'solicitada'
ActiveCell.Offset(-1).Activate ' esta instruccion va 'retrocediendo' fila a fila hasta llegar a una fecha < que la solicitada
Loop ' la continuidad del bucle
DirCC = ActiveCell.Address ' se establece la 'nueva' direccion de la celda 'CC' [lo que sea que signifique 'CC'] :))
Sheets(1).Select ' se regresa de nuevo a la hoja en la primer posicion en el conjunto de hojas en el libro
Range(DirCP).Activate ' se activa la celda donde se habia quedado la macro ANTES de llamar a esta segunda macro
End Sub

Preguntas similares