Inputbox

Te saludo y recurro a tu ayuda tengo un problemilla que se que tu me puedes ayudar a resolver, te comento que tengo una hoja de Excel donde tengo datos de la siguiente manera:
Enero Febrero Marzo Acumulado Resultados DIFERENCIA
100 100 10 210 200 10
En la columna acumulado se suman de Enero a Marzo en forma horizontal y en la columna Diferencia se comparan vs. La columna Resultados y arroja una diferencia y quiero que cada que se modifique alguna la alguna de las celdas de la fila con datos me muestre un inputbox donde me pida la razón por la cual existe diferencia y la ponga en una determinada celda.
Ojala me puedas ayudar a resolverlo, de antemano te lo agradezco muchísimo.
Saludos y Gracias
{"Lat":20.6626623425013,"Lng":-103.386840820313}
Respuesta
1
Suponiendo que enero esta en A1, febrero esta en B1
Copia este código en la hoja en donde están los datos (no en un modulo)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Then
x = InputBox("indique Razon del cambio")
Range("f1").Value = x ' rango en donde guardas los cambios
End If
End Sub
Hola muchas gracias por tu ayuda ya lo solucione con este código:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 9 Then
If Range("Q$9").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$80").Value = dat
End If
End If
If Target.Row = 10 Then
If Range("Q$10").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$81").Value = dat
End If
End If
If Target.Row = 11 Then
If Range("Q$11").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$82").Value = dat
End If
End If
If Target.Row = 12 Then
If Range("Q$12").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$83").Value = dat
End If
End If
If Target.Row = 13 Then
If Range("Q$13").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$84").Value = dat
End If
End If
End sub
El código que me enviaste me sirvió mucho para darme una idea ahora solo tengo una duda más.
En el lugar donde pondré las respuestas son varias filas abajo en la fila 80-84 y quisiera saber si hay alguna manera de que aquellas filas en que en la columna a no tengan datos se oculten automáticamente y se muestren cuando tengan datos.
Saludos
Puedes Agregar un if al Final de tu codigo :
IF Range("B$84").Value = "" then
Rows("84:84").Select
Selection.EntireRow.Hidden = True
end
IF Range("B$83").Value = "" then
Rows("83:83").Select
Selection.EntireRow.Hidden = True
end if
IF Range("B$82").Value = "" then
Rows("82:82").Select
Selection.EntireRow.Hidden = True
end if
IF Range("B$81").Value = ""  then
Rows("81:81").Select
Selection.EntireRow.Hidden = True
end if
IF Range("B$80").Value = "" then
Rows("80:80").Select
Selection.EntireRow.Hidden = True
end if
¿Muchas gracias por tu ayuda te comento que el código que me pasaste funciona pero no por completo pues efectivamente al quedar vacías las celdas las oculta sin embargo si la celda se modifica no vuelve a mostrarse podríamos corregir esto de alguna manera?
Lo intente así
IF Range("B$80").Value = "" then
Rows("80:80").Select
Selection.EntireRow.Hidden = True
Else
Selection.EntireRow.Hidden = False
end if
pero no me funciono me podrias por favor orientar??
Saludos y Gracias
Esta muy bien solo te falto indicarle cual es fila que tiene que mostrar
IF Range("B$80").Value = "" then
Rows("80:80").Select
Selection.EntireRow.Hidden = True
Else
Rows("80:80").Select
Selection.EntireRow.Hidden = False
end if

1 respuesta más de otro experto

Respuesta
1
Las lineas de código sería estas:
dat = InputBox("¿Porqué existe esta diferencia?")
Range("A1").Value=dat
Pones las lineas donde las necesites y cambias el valor de Range por tu celda donde quieras el resultado.
>Un saludo
>Julio
Hola antes que nada gracias por tu respuesta solo tengo una pregunta más te comento que el código que utilice fue este:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$Q$9" Then
If Range("Q$9").Value > 0 Then
dat = InputBox("¿Porqué existe esta diferencia?")
Range("K1").Value = dat
End If
End If
End Sub
La celda Q9 arroja el resultado de una resta y al cambiar dicho resultado me debería mostrar el inputbox
Solo que la solo me da el inputbox si modifico directamente la celda y no así cuando se mueve por efecto de las demás celdas.
Gracias y saludos
Hola muchas gracias por tu ayuda ya lo solucione con este código:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 9 Then
If Range("Q$9").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$80").Value = dat
End If
End If
If Target.Row = 10 Then
If Range("Q$10").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$81").Value = dat
End If
End If
If Target.Row = 11 Then
If Range("Q$11").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$82").Value = dat
End If
End If
If Target.Row = 12 Then
If Range("Q$12").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$83").Value = dat
End If
End If
If Target.Row = 13 Then
If Range("Q$13").Value > 0 Then
dat = InputBox("¿Porqué razon es MAYOR el acumulado que el Edo de Resultados?")
Range("B$84").Value = dat
End If
End If
End sub
El código que me enviaste me sirvió mucho para darme una idea ahora solo tengo una duda más.
En el lugar donde pondré las respuestas son varias filas abajo en la fila 80-84 y quisiera saber si hay alguna manera de que aquellas filas en que en la columna a no tengan datos se oculten automáticamente y se muestren cuando tengan datos.
Saludos
vamos a ver tienes que poner este codigo despues del último End If de tu macro
Call Ocultar
Esto hará que después de ejecutar tu macro salte a esta otra
Private Sub Ocultar()
'Seleccionamos la última celda de tu fila que quieres ocultar o mostrar
Range("IV5").Select  'Cambia el numero de la fila a tu necesidad
'Ahora ponemos una suma de la fila para comprobar que no tiene datos o sí los tiene
ActiveCell.FormulaR1C1 = "=SUM(RC[-255]:RC[-1])"
'Creamos una variable para recoger el valor de esa celda
valor = Range("IV5").Value
'Condicionamos si el valor es 0
If valor = "0" Then
'Selecciona esa fila
Rows("5:5").Select
'Si el valor de la suma es 0 la oculte
Selection.EntireRow.Hidden = True
'Nos posicionamos en otra celda por si la oculta

Range("A6").Select
End If
End Sub
Esto lo tendrás que repetir tantas veces como filas quieres ocultar, poniendo las referencias que necesites en cada linea de código, la fórmula te vale para todas solo tienes que cambiar las filas Rows("5:5") o la que sea en cada caso, y el valor del rango Range("IV5 o el que sea 6, 7, 8...
El posicionamiento final ponlo en una celda que no se pueda ocultar.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas