Cambio valor de celda siguiente a la derecha

Necesito que al seleccionar un ítem de lista desplegable en celda de columna B, según qué seleccione me inserte valor en otra lista en el proyecto. Mi problema está que lo se hacer refiriéndome a cada celda A1 que cambie la B1 pero esto quiero que lo haga en todas las celdas de cada columna.
Ej. :
(A) COLUMNA1=LISTA CONTINENTE
(B) COLUMNA2=LISTA PAIS
(C) COLUMNA3=VALOR CORRESPONDIENTE LISTA CAPITAL o en su defecto en VB insertar valor correspondiente:
si valor B1 ="PAIS1" entonces
C1="CAPITAL1"
¿Pero y las demás filas de las columnas?
Si pongo rango de celdas (B1:B50) cambia valor si cambio ítem en cualquier celda de la columna...
¿Hay algún método que se refiera a la celda siguiente a la derecha para su cambio de valor?

3 respuestas

Respuesta
1
Esto tendrías que hacerlo nombrando rangos y asignándolos según la condición de cada ComboBox, a lo que me refiero es:
If ComboBox1.Value = "Costa Rica" Then
        ComboBox2.AddItem "Provincias_CR"
ElseIf ComboBox1.Value = "España" Then
        ComboBox2. AddItem "Provincias_España"
...
End If
Otra forma podría se con Select Case, en fin, existen diferentes formas de hacerlo, solo es de usar la imaginación y la forma más sencilla.
[email protected]
Hola jcgonzalez:
Primero agradecerte tus respuestas e interés.
Si, si veo varias opciones con Combobox o ListBox concretamente que es lo que utilizo en este caso pero quiero reflejar la capital exactamente en la celda y no un listbox, quiero que en B1 seleccione de la lista España y se escriba en C1 Madrid. Esto es fácil con código, lo que no se hacer es con todo el rango de celdas de cada columna. Lo que he probado dolo te sale para una celda como te explico:
Sub ejemplo()
If Range("B5").Value = "España" Then
Range("F5").Value = "Madrid"
ElseIf Range("B5").Value = "Francia" Then
Range("F5").Value = "París"
ElseIf Range("B5").Value = "Portugal" Then
Range("F5").Value = "Lisboa"
Else: Range("F5").Value = ""
End If
End Sub
Envíame tu archivo para comprender mejor y ayudarte.
[email protected]
Respuesta
1
Hay varias opciones para esto.
Si tu lista de col A no tendrá más de 7 opciones, en col B podes utilizar Validación, Datos, Lista y en el campo escribir una fórmula del tipo:
=SI(A1="AMERICA";LISTA_AM;SI(A1="ASIA";LISTA_AS;SI(A1="EUROPA";LISTA_EU;LISTA_n)))
Este ejemplo solo contempla 3 opciones, faltaría completar con el resto.
Previamente ya tendrás definidas en algún lugar de tu libro las distintas listas con nombre de rango: LISTA_AM, LISTA_AS y así con cada una que utilizarás en la fórmula
Cuando completes la col A con esta validación, se ajustará a cada celda A2, A3, etc.
Ahora, para la 3er col, como las opciones de la col B (países) ya serán + de 7 seguramente, necesitarás otra opción que puede ser con fórmulas o con macros.
Como esto ya es más complejo explicarlo, mejor será que me solicites el ejemplo a mi correo. Lo encontrarás en mi sitio (no olvides recordarme tu alias y motivo de consulta)
Hola Elsa:
Está muy bien el ejemplo, pero si quiero hacer esto para un rango concreto A2:A25 (toda la columna A de tamaño DINA4 ¿tengo qué hacerlo en las 23 celdas consecutivas y posteriores? ¿Hay algún método que copia lo que sucede en fila y trasladas a filas inferiores?
Si utilizaste el ejemplo de validación con fórmula, habrás colocado la validación en la primera, por ej: en A2
Ahora seleccioná todo el rango (A2:A25) y llamá nuevamente al menú Datos, Validación.
Te aparecerá un mensaje de si querés extender la validación a las otras celdas. Respondé que si.
Si la fórmula está con ref absoluta, por ej: $M$1, en todas las celdas del rango se evaluará el contenido de M1.
En cambio si la validación no incluye los signos $, en A2 evaluará la celda M1, en A3 se evalúa M2, y así sucesivamente.
Espero haber aclarado el tema. No olvides finalizar la consulta.
Respuesta
1
Me temo que no entiendo bien el problema en su totalidad, pero a la pregunta que haces: "¿Hay algún método que se refiera a la celda siguiente a la derecha para su cambio de valor?", la respuesta es sí, lo hay: la propiedad Offset.
Por ejemplo, la siguiente instrucción de VBA devuelve la dirección de la celda situada a la derecha de la celda activa y su contenido:
    MsgBox "La celda situada a la derecha de la celda activa (" & ActiveCell.Address & ") es " & ActiveCell.Offset(, 1).Address & vbNewLine & "Su valor es " & ActiveCell.Offset(, 1).Value

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas