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

[0] Índice de Mensajes

Ir a la versión completa