Programación General > Visual Basic 6.0 e inferiores
macro visual basic
(1/1)
			mrocli:
			
			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.
		
			F_Tanori:
			
			Bueno, primero las condiciones estan incorrectas
--- Código: Visual Basic ---If 17 < x < 18 And y = 7 Then
seria algo asi
--- Código: Visual Basic ---If  x > 17 and x < 18 and y = 7 Then
Se utiliza function cuando es necesario retornar un valor, y sub cuando es solo una SUBrutina o procedimiento o accion, la cual no es necesario que retorne nada
Ejemplo:
Funcion, realiza un procedimiento y retorna un valor (resultado)
--- Código: Visual Basic ---function NombreCompleto (Nombre as String,Apellido As String) As String      NombreCompleto  = Nombre &" " &Apellidosend function
Llamado, al darle clic a un boton desde un formulario
Procedimiento (realiza un procedimiento o ejecuta una accion pero no retorna ningun valor)
--- Código: Visual Basic ---  Private Sub Command1_Click()        Dim NC as String,N as String,A as string               N =InputBox("Cual es tu nombre?")       A =InputBox("y tus Apellidos?")       NC = NombreCompleto(N,A)        MsgBox("Hola, " & NC)  End Sub 
Mira este es un metodo (hay mas) para tomar un valor de una celda
--- Código: Visual Basic ---Function QueHayEnLaCelda(Celda) as String      QueHayEnLaCelda = Excel.Range(Celda).Value   ' Hoja Activa como ejemplo . se puede referenciar navegando en  Workbooks, Sheets...End Funcion
--- Código: Visual Basic ---  Private Sub Command1_Click()       Dim Resultado As String,LaCelda As String       Dim Columna As String, Fila as Integer              Columna = "A"       Fila=4        LaCelda =Columna & Fila        Resultado =QueHayEnLaCelda("A1")        MsgBox("A1:" & Resultado )        Resultado =QueHayEnLaCelda("A2")       MsgBox("A2:" & Resultado )        Resultado =QueHayEnLaCelda("A2")       MsgBox("A12:" & Resultado )        Resultado =QueHayEnLaCelda(LaCelda) ' Como veras es una simple cadena       MsgBox(LaCelda &" :" & Resultado )   End Sub 
Espero te sirva, procura utilizar las etiquetas  CODE
Nota: Ningun codigo ha sido compilado por falta de esas herramientas, pero la idea es esa .
Saludos
		
			mrocli:
			
			ok, gracias
		
Navegación
Ir a la versión completa