Tengo valores numericos en una hoja del libro A de excel que nececito pasar al libro B.
En B creo una macro con el siguiente codigo:
Sub Actualizar()
'Define los path para la apertura del xls que tomara los valores.
varPath = ThisWorkbook.Path
varPathComplete = "" & varPath & "\01-Modelo_ Carga.xls"
'abre el archivo que tomara los valores.
Workbooks.Open Filename:=varPathComplete
Sheets("Calculos").Select 'se abre lo hoja del libro que contiene las filas con los valores
Dim rng As Range 'variable que setea el rango
Dim i As Integer, counter As Integer, m As Integer 'define los contadores
Dim mimatriz() As Integer 'define la matriz
i = 1 'cuenta las filas del rango.
m = 1 ' cuenta los elementos de la matriz.
'Setea el rango a evaluar.
Set rng = Range("I3:I31")
ReDim Preserve mimatriz(rng.Rows.Count)
'initialize i to 1
'Loop for a count of 1 to the number of rows
'in the range that you want to evaluate.
For counter = 1 To rng.Rows.Count
Debug.Print rng.Cells(CInt(i))
If rng.Cells(Int(i)) > 1 Then
mimatriz(m) = rng.Cells(i)
m = m + 1
End If
i = i + 1
Next
'cierra el archivo del que se tomaron los valores.
i = 1
m = 1
counter = 1
Set rng = Nothing
ActiveWindow.Close SaveChanges:=False
'*************************************************************************************** ya cargo los valores en la matriz y se deben distribuir por las celdas del documento abierto.
'***************************************************************************************
'For i = 0 To rng.Rows.Count'modelo de iteraci{on post seteo
'Debug.Print mimatriz(i)
'Next
Sheets(1).Select 'Activa la hoja en la que se imprimiran los valores
'Setea el rango a imprimir.
Set rng = Range("I8:I24")
'Loopeapor el numero de filas
'in the range that you want to evaluate.
For counter = 1 To rng.Rows.Count
If i = 2 Or i = 7 Or i = 11 Then
Else
varAddress = rng.Cells(i).Address
Debug.Print varAddress
Range(varAddress).Select
Range(varAddress) = mimatriz(m)
Debug.Print mimatriz(m)
m = m + 1
End If
i = i + 1
Next
'**********************************************************************************************************************
End Sub
El procedimiento toma del rango de celdas en A los valores correctos en el orden correcto y los ubica en B en el mismo orden en las celdas indicadas en la programación.
El error ocurre cuando el valor tomado de B es 0 o 1.
En tal caso lo ubica en ultimo lugar.No lo hace ni con 2 ni con 10.
ejemplo:
si la matriz incorpora estos valores de A en este orden
1
5
0
2
coloca en B
1
5
2
0
desde ya muchisimas gracias por tu atención.
Leer las respuestas