Visual Basic para Aplicaciones - problema con matriz en excel

Life is soft - evento anual de software empresarial
 
Vista:

problema con matriz en excel

Publicado por carlos (3 intervenciones) el 30/09/2012 13:28:01
hola,estoy trasladando datos de un libro a otro de excel mediante una matriz en vb.
No tengo problemas con la identificación de los valores en el primer libro ni con la impresion de los mismos en el otro libro en las celdas indicadas.
La cuestión se produ ce cuando los valores son 0 o 1.
La matriz me los ordena al final imprimiendolos en celdas incorrectas.
Solo sucede con estos valores.

desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

problema con matriz en excel

Publicado por JuanC (565 intervenciones) el 30/09/2012 13:46:17
no puedo hacer nada con lo poco que contás...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con matriz en excel

Publicado por carlos (3 intervenciones) el 30/09/2012 14:04:46
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

problema con matriz en excel

Publicado por JuanC (565 intervenciones) el 30/09/2012 17:00:32
algunas cosas:
.los rangos de origen y destino son de diferente amplitud
.los valores menores que 1 no son copiados, la matriz se inicia por defecto en cero, eso
hace que se copien valores que no corresponden a los copiados sino a los valores no
iniciados de la matriz
.la condición If i = 2 Or i = 7 Or i = 11 Then no cumple ninguna función ??


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con matriz en excel

Publicado por carlos (3 intervenciones) el 01/10/2012 01:12:18
Gracias por tu respuesta,

esas son celdas en las que no hay que cargar por cuestiones de formato.
Ya mismo empiezo a investigar esos detalles que me decis.

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar