Contenido de una celda en funcion del valor de otra

10/11/2003 - 23:34 por Mario Alberto | Informe spam
Hola

Tengo el "LibroB" con tres celdas nombradas "Num", "Logo1" y "Logo2", las
dos ultimas asociadas a casillas de verificación, lo que quiero hacer es que
al momento de seleccionar una o la otra o ninguna, en la celda "Num" se me
refleje un valor distinto, en el de "Logo1" sería el último valor utilizado
en la columna "A" del "LibroC" y en el caso de "Logo2" se abra un InputBox.

Lo tenía por formula, sin embargo, a veces es necesario cambiar éste número
y se pierde la formula. (Varias personas utilizamos el archivo en cuestión)

Gracias anticipadas por la ayuda.

Sub N()
If Sheets("Hoja1").Range("LOGO1") = True Then
Sheets("Hoja1").Range("Num") = [\\MR\C\Mis
documentos\BD\BDPL.xls.Range("R65536C1").End(xlUp)] + 1
ElseIf Sheets("Hoja1").Range("LOGO2") = True Then
Sheets("Hoja1").Range("Num") = NumeroR()
ElseIf Sheets("Hoja1").Range("LOGO1") = False And
Sheets("Hoja1").Range("LOGO2") = False Then
Sheets("Hoja1").Range("Num") = ""-""
Else

End If
End Sub
-
Function NumeroR() As String
NumeroR = Application.InputBox(prompt:="Número proporcionado por R? Formato
"" XX - XXXX / AA """, Type:=2)
End Function

... ...
Saludos
Mario Alberto

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
11/11/2003 - 09:34 | Informe spam
Hola, Mario !

... tres celdas nombradas "Num", "Logo1" y "Logo2", las dos ultimas asociadas a casillas de verificacion
... que al ... seleccionar una o la otra o ninguna, en la celda "Num" ... un valor distinto
... el de "Logo1" sería el último valor utilizado en la columna "A" del "LibroC"
... en el caso de "Logo2" se abra un InputBox [...]



1.- [yo] 'veo' 4 'posibles' combinaciones 'seleccionables' ...
0 = ninguna de las dos
1 = solo la primera
2 = solo la segunda
3 = AMBAS
2.- la 'estructura' que estas utilizando [If ... ElseIf ... End If] 'ejecuta' LA PRIMERA que se 'cumpla' ... 'pero'...
¿y si estan seleccionadas AMBAS y la que 'debia' ejecutarse es la segunda???
3.- usar 'Application.InputBox' con 'Type:=2' SOLO 'valida' que la entrada [del usuario] sea texto ... 'pero' ...
NO te 'garantiza' que sea CON el formato 'solicitado' :((
4.- la 'forma' utilizada para 'tomar' el valor [+1] de la ultima fila en 'A' del 'LibroC' [???]
[si te esta 'funcionando'] reemplazala -donde corresponda- en el codigo que te propongo a continuacion:
=> se supone que el 'LibroC' [BDPL.xls] esta abierto<=Sub Actualiza_Num()
Dim Opcion As Integer
With Worksheets("Hoja1")
If .Range("Logo1") Then Opcion = Opcion + 1
If .Range("Logo2") Then Opcion = Opcion + 2
Select Case Opcion
Case 0: .Range("Num,Logo1,Logo2").ClearContents
Case 1: .Range("Num") = _
Workbooks("BDPL").Worksheets("Hoja1").Range("a65536").End(xlUp) + 1
Case 2: .Range("Num") = _
InputBox("Número proporcionado por R?" & vbCr & "Usa el formato: "" XX - XXXX / AA """)
Case 3
Select Case _
MsgBox("Logo1 y Logo2 están seleccionados 'simultáneos'." & vbCr & _
"Para 'corregir' [o CANCELAR] selecciona el botón 'correspondiente':" & vbCr & _
" SI = 'des-seleccionar' Logo1" & vbCr & _
"NO = 'des-seleccionar' Logo2" & vbCr & _
"Cancelar = Terminar SIN 'actualizar'", _
vbYesNoCancel + vbQuestion, "Selección 'ambigüa'")
Case vbYes: .Range("Logo1").ClearContents: Actualiza_Num
Case vbNo: .Range("Logo2").ClearContents: Actualiza_Num
Case vbCancel: Exit Sub
End Select: End Select: End With
End Sub

Saludos,
Héctor.
Respuesta Responder a este mensaje
#2 Mario Alberto
11/11/2003 - 19:22 | Informe spam
Hola, Héctor !

Antes que nada, muchas gracias por la solución, !!!Trabaja perfecto¡¡¡¡,
pero... como siempre a todos se nos ofrecen más cosas y surgen dudas:

3.- usar 'Application.InputBox' NO te 'garantiza' que sea CON el


formato 'solicitado' :((

¬Existe algún control que oblige a utilizar el formato solicitado.?

=> se supone que el 'LibroC' [BDPL.xls] esta abierto<


¬Esto lo modifique con:
Case 1: Workbooks.Open FileName:="BDPL.xls"
Workbooks("LibroA.xls").Activate
.Range("Num") = _
Workbooks("BDPL.xls").Worksheets("Hoja1").Range _
("a65536").End(xlUp) + 1
Workbooks("BDPL.xls").Close SaveChanges:=False

¬Y aquí viene la otra pregunta,
¿Como modifico el libro [BDPL.xls] poniendo la ruta del mismo en una
ubicación de red?
Lo intenté sustituyendo BDPL.xls por "\\MA\c\Mis
documentos\BDN\BDPL.xls", sin embargo,
me da el error 9 subíndice fuera de intervalo.

Una vez más gracias.

Saludos
Respuesta Responder a este mensaje
#3 Héctor Miguel
12/11/2003 - 07:49 | Informe spam
Hola, Mario !

primero... la parte mas 'corta' [en respuesta] ;)
Esto lo modifique con:
Case 1: Workbooks.Open FileName:="BDPL.xls" [...]
... pregunta, ¿Como modifico el libro [BDPL.xls] poniendo la ruta del mismo en una ubicacion de red?
... intente ... "\\MA\c\Mis documentos\BDN\BDPL.xls" ... error 9 subindice fuera de intervalo.



==> [aunque no indicas las versiones instaladas: excel, windows, y -en su caso- software de redes]...
los directorios de red [segun los convencionalismos 'unc'] debieran funcionar de manera 'transparente' :((
intenta 'metiendo' entre parentesis el 'FileName:=' [p.e.]
Case 1: Workbooks.Open(FileName:="\\MA\c\Mis documentos\BDN\BDPL.xls") [...]
o [sin los parentesis 'pero'...] SIN el nombre del argumento 'FileName' [p.e.]
Case 1: Workbooks.Open "\\MA\c\Mis documentos\BDN\BDPL.xls" [...]

Existe algun control que obligue a utilizar el formato solicitado.?



==> NO !!! [al menos, hasta donde yo se] :((
lo que [sugiero que] se pudiera hacer es... 'entrampar' la entrada del usuario 'monitoreando' CADA caracter
'simulando' una validacion de los datos introducidos [p.e.]
==> usando una funcion 'auxiliar' ['parecida' a la que usaste en tu codigo 'original'] <='suponiendo' que necesitas 'validar' que la entrada sea CON el 'formato' de: NN-NNNN/LL
[2 digitos + 1 guion + 4 digitos + 1 diagonal + 2 letras]
los digitos 'ocuparian' las posiciones 1, 2, 4, 5, 6 y 7 las iterales en las posiciones 9 y 10 el guion [# 3] y la diagonal [#
8]

1.- 'sustituye' el Case 2 por lo siguiente:
Case 2: .Range("Num") = Entrada_Correcta

2.- 'agrega' [en el modulo de codigo] la funcion:
Private Function Entrada_Correcta() As String
Dim Pos As Integer, Orig As String, Tmp As String, OK As String
Iniciar:
Orig = "": Tmp = "": OK = ""
Orig = InputBox( _
Prompt:="Por favor, ingresa el dato correspondiente." & vbCr & _
"Utiliza el formato: NN-NNNN/LL" & vbCr & _
"('sigue' el ejemplo propuesto)", _
Title:="Validando entrada...", _
Default:="12-3456/AB")
If Orig = "" Then GoTo Iniciar Else Tmp = UCase(Application.Substitute(Orig, " ", ""))
For Pos = 1 To 10
Select Case Pos
Case 1, 2, 4, 5, 6, 7
If Val(Mid(Tmp, Pos, 1)) >= 0 And Val(Mid(Tmp, Pos, 1)) <= 9 _
Then OK = OK & Mid(Tmp, Pos, 1) Else GoTo Repetir
Case 3
If Mid(Tmp, Pos, 1) = "-" Then OK = OK & Mid(Tmp, Pos, 1) Else GoTo Repetir
Case 8
If Mid(Tmp, Pos, 1) = "/" Then OK = OK & Mid(Tmp, Pos, 1) Else GoTo Repetir
Case 9, 10
If Asc(Mid(Tmp, Pos, 1)) > 64 And Asc(Mid(Tmp, Pos, 1)) < 91 _
Then OK = OK & Mid(Tmp, Pos, 1) Else GoTo Repetir
End Select: Next: Entrada_Correcta = OK: Exit Function
Repetir:
MsgBox "La entrada: " & Orig & vbCr & "es ¡ INCORRECTA !!!": GoTo Iniciar
End Function

NOTAS:
1.- el algoritmo de esta funcion NO 'permite' al usuario 'seguir adelante' MIENTRAS NO 'haga' una entrada 'correcta'
==> SOLO 'puede' cancelarla con las teclas {Ctrl}+{Break} <=2.- 'usando' la funcion UCase [vba], NO 'importa' si el usuario introduce las literales en minusculas ;)
3.- si usas excel 2k [o 'superior'] cambia 'Application.Substitute(...' [funcion hoja de calculo] por 'Replace(...' [funcion vba]
4.- 'revisa' [muy bien] 'lo que hace' [te sugiero] usar una macro 'de prueba' +/- como la siguiente:
Sub Validar_Entrada()
ActiveCell = Entrada_Correcta
End Sub

saludos,
Héctor.
Respuesta Responder a este mensaje
#4 Mario Alberto
12/11/2003 - 23:31 | Informe spam
Hola, Héctor !!!

Muchas gracias por la ayuda, lo de entrampar la entrada de los datos me
parece fabuloso!!!

Con la otra cuestión, te comento que estaba cometiendo un error, ya que si
abría el libro pero al solicitarle la última celda de dicho libro, volvía a
indicar la ruta completa (Grave error) y gracias a tus sugerencias lo note.

Saludos

Mario Alberto
Respuesta Responder a este mensaje
#5 Héctor Miguel
13/11/2003 - 02:30 | Informe spam
Hola, Mario !

... si abria el libro pero al solicitarle la ultima celda ... volvia a indicar la ruta completa [...]



[a 'simple vista'] me parecio que tratabas de 'tomar' datos del libro [aun] estando 'cerrado'
por eso no le 'preste' mucha atencion :(( ... en fin, ya lo has resuelto :))

gracias por el 'feed-back' ;)

saludos,
Héctor.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida