Necesito que si en el imputbox se le da el valor 1 entonces una celda sea igual a otra

Sub validacion()
Dim valor As Double
valor = 0
valor = Val(InputBox("Escriba un nº del 1 al 12"))
If valor < 1 Or valor > 12 Then
Do
MsgBox ("El dato introducido no es válido")
valor = Val(InputBox("Escriba un nº del 1 al 12"))
Loop While valor < 1 Or valor > 12
Else
Y a partir de aquí debería meter mi código, el problema es que no me funciona.
Yo lo que quiero es que si en el imputbox se le da el valor 1 entonces que una celda sea igual a otra: Ejemplo, si valor = 1 entonces r2=f2
si valor =2 entonces r2=g2, si valor =3 entonces r2=h2, y asi.
Como lo pongo, es que lo he probado de mil maneras y nada.
Muchas Gracias

1 Respuesta

Respuesta
1
Veamos:si valor=1, buscarás el valor de F2. La columna F es la número 6 de la hoja de cálculo. Por lo que me comentas, siempre quieres un resultado de la fila 2, y lo único que cambia es la columna. En VBA existe la palabra Offset que sirve para desplazarse por la hoja de cálculo. Funciona de la siguiente manera: Offset(numero1, numero2). El numero1 indica las filas que te quieres desplazar, y numero2 las columnas. Por ej. la sentencia Range("A1"). Offset(2,1). Activate lo que hace es activar la celda B3 (2 filas hacia abajo y una columna a la izquierda, consulta la ayuda de Excel para más detalle). Teniendo esto claro estarás de acuerdo que si valor=1, la sentencia sería Range("R2"). Value=Range("A2"). Offset(0,5). Value. Bien, pues el código completo para hacer lo que deseas es:
Sub validacion()
Dim valor As Double
valor = 0
valor = Val(InputBox("Escriba un nº del 1 al 12"))
If valor < 1 Or valor > 12 Then
Do
MsgBox ("El dato introducido no es válido")
valor = Val(InputBox("Escriba un nº del 1 al 12"))
Loop While valor < 1 Or valor > 12
Else
Dim Columna As Double
Columna = 4 + valor
Range("R2").Value = Range("A2").Offset(0, Columna).Value
End If
End Sub
Espero te sirva, si te quedan dudas, coméntame. P.D: éste es un foro gratuito. Tu respuesta ha requerido por mi parte leer tu pregunta, estudiarla, crear el código y explicártelo. Salvo que te queden dudas, ahora te toca puntuármela. La puntuación predeterminada es un 3 sobre 5. Quizás desees cambiarla.
Perdona que te moleste, pero esta ya es la última pregunta.
Lo que necesito es que se ha lo mismo, no solo en la fila nº2, si no de la fila nº2 a la nº 20000.
¿Cómo hago eso?
Muchísimas gracias
Cuando dices que necesitas lo mismo de la fila 2 a la 2000, hay algo que no me queda claro: ¿Necesitas qué pregunta 2000 veces un nº del 1 al 12 y en función del nº que se diga cada vez, poner el resultado que corresponda en la columna R? ¿O por el contrario sólo preguntas el número una vez y en función de dicho número rellenar el rango R2:R2000? Bueno, entenderé que lo que necesitas es esta última opción, y en ese caso el código es el siguiente:
Sub validacion()
Dim valor As Double
valor = 0
valor = Val(InputBox("Escriba un nº del 1 al 12"))
If valor < 1 Or valor > 12 Then
Do
MsgBox ("El dato introducido no es válido")
valor = Val(InputBox("Escriba un nº del 1 al 12"))
Loop While valor < 1 Or valor > 12
Else
Dim Columna As Double
Columna = 4 + valor
Range("R2:R2000").Value = Range("A2:A2000").Offset(0, Columna).Value
End If
End Sub
Como ves, es prácticamente igual que el anterior, sólo cambia el rango. Espero te sirva, si te queda alguna duda vuelve a preguntarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas