Visual Basic - macro visual basic

Life is soft - evento anual de software empresarial
   
Vista:

macro visual basic

Publicado por mrocli (2 intervenciones) el 21/07/2011 12:36:35
Hola :

Quería hacer una macro en el Visual Basic del Excel (tengo la versión del 2003), y he probado de distintas formas pero en algo me equivoco, por lo que me gustaría pediros ayuda

La cuestión que quiero hacer es que coja los datos de dos columnas, y según lo que ponga en ellas, poner un dato en una tercera columna. Es decir, según A1 y B1, escribir el dato correspondiente en C1. Lo mismo con A2 y B2 en C2, etc. Así las cosas, la parte central creo que la tengo bien :


If 17 < x < 18 And y = 7 Then
z = "1,5"
ElseIf 19 < x < 20 And y = 7 Then
z = "1"
...
...
ElseIf x = "" And y = "" Then
z = ""

Pero el inicio y el final lo he probado de distintas maneras y no se exactamente como ponerlo... Primero, no se muy bien si debería ser Sub o Function.

Y después, a la hora de definir x, y, z, no se muy bien si ponerlo como "x = A1" ó "x = Column.A" o de otra manera.

Y en la parte final, no se si es "Next x" y "Next y" o si por el contrario es "Nextfor x" y "Nextfor y", o si también tengo que ponerlo para "z".

Muchas gracias por vuestra ayuda.
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 Antoni Masana

macro visual basic

Publicado por Antoni Masana (88 intervenciones) el 22/07/2011 12:53:41
En primer lugar el primer IF esta mal, ¿Porque? Te cuento como funciona

If 17 < x < 18 And y = 7 Then

Primero comprara 17 < x esto da como resultado 0 si es FALSO y -1 si es VERDAD
segundo comprara el resultado 0 < 18 or -1 < 18 es siempre VERDAD
Tercero compara y = 7

Prueba esto y veras que pasa

Sub popo()
Z = 17: If 18 < Z < 0 Then MsgBox "18 < z < 0 = " & Z
Z = 18: If 18 < Z < 0 Then MsgBox "18 < z < 0 = " & Z
Z = 19: If 18 < Z < 0 Then MsgBox "18 < z < 0 = " & Z
Z = 20: If 18 < Z < 0 Then MsgBox "18 < z < 0 = " & Z
Z = 21: If 18 < Z < 0 Then MsgBox "18 < z < 0 = " & Z
End Sub

En respuesta a tu pregunta:

Sheets("Hoja_1").Select ' Selecciona la hoja

For a = 1 To 36
X = Range("A" + Mid$(Str$(a), 2)).Cells
Y = Range("B" + Mid$(Str$(a), 2)).Cells
....
Range("C" & Mid$(Str$(a), 2)).Cells = Z
next
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

macro visual basic

Publicado por mrocli mrocli@yahoo.es (2 intervenciones) el 22/07/2011 19:00:03
ok, 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