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

#6 Héctor Miguel
11/12/2003 - 07:14 | Informe spam
hola, Mario Alberto !

... no se como resolver ... el error 13 "El tipo no coincide"
... creo que se debe a que al tomar ... de un ... rango de referencia ... tanto valores numericos como de texto
... si el ultimo registro ... es texto me arroja el error mencionado.
... evaluar si la ultima celda es Texto y en dicho caso me busque la siguiente hacia arriba que sea un valor numerico?



1.- si no recuerdo mal, estabas usando un codigo para 'tomar el ultimo valor' [en un rango] y 'sumarle' uno +/- como sigue:
Sheets("Hoja1").Range("Num") = [\\MR\C\Mis documentos\BD\BDPL.xls.Range("R65536C1").End(xlUp)] + 1

2.- la propuesta de cambio que te hice fue en el siguiente 'sentido':
Case 1: .Range("Num") = _
Workbooks("BDPL").Worksheets("Hoja1").Range("a65536").End(xlUp) + 1

3.- tal como mencionas, si la 'ultima' celda NO contiene un valor numerico... :(( [tampoco se le 'puede sumar' ... nada] :))
algunas [posibles] opciones de solucion serian [de entre otras]...
a) 'localizar' la ultima fila [el numero de la fila] CON valores numericos [p.e. en la columna 'a:a']
- por funciones de hoja de calculo => =Coincidir(9.9999999999E+307,A:A)
- 'usandola' a traves de codigo => Range("a" & Evaluate("Match(9.9999999999e+307,a:a)")) + 1
b) 'localizar' el ultimo valor numerico [p.e. en la columna 'a:a']
- por funciones de hoja de calculo => =DesRef(A1,Coincidir(9.9999999999E+307,A:A)-1,0)
- a traves de codigo => Range("a1").Offset(Application.Match(9.9999999999E+307, Columns("a:a")) - 1) + 1

saludos,
hector.
Respuesta Responder a este mensaje
#7 Mario Alberto
12/12/2003 - 00:16 | Informe spam
Hola, Héctor !!

Efectue el cambio que propones y efectue las pruebas, dandome el mismo resultado "Error 13 El tipo no coincide

Tienes alguna otra idea

Saludos y Gracia

Mario Alberto
Respuesta Responder a este mensaje
#8 Héctor Miguel
12/12/2003 - 00:55 | Informe spam
hola, Mario Alberto !

... mismo resultado "Error 13 El tipo no coincide" ... alguna otra idea.



[posiblemente] que NO 'se deba' [solo] a si la ultima celda del rango es texto.
¿podrias 'transcribir' el codigo? [al menos, la parte donde se 'detiene' para marcar el error]

saludos,
hector.
Respuesta Responder a este mensaje
#9 Mario Alberto
15/12/2003 - 19:33 | Informe spam
Hola, Héctor,

Perdón por la tardanza, en la Línea del Case 1: es donde me arroja el error
13 El tipo no coincide

Saludos

Este es el código que me arroja el error:

Sub Actualiza_Num()
Dim Opcion As Integer
With Worksheets("Hoja1")
If .Range("Lg1") Then Opcion = Opcion + 1
If .Range("Lg2") Then Opcion = Opcion + 2
Select Case Opcion
Case 0: .Range("Num,Lg1,Lg2").ClearContents
Case 1: .Range("Num") = _

Workbooks("BDL").Worksheets("Hoja1").Range("a1").Offset(Application.Match(9.
9999999999E+307,Columns("a:a")) - 1) + 1
Case 2: .Range("Num") = Entrada_Correcta
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("Lg1").ClearContents: Actualiza_Num
Case vbNo: .Range("Lg2").ClearContents: Actualiza_Num
Case vbCancel: Exit Sub
End Select: End Select: End With
End Sub

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
Respuesta Responder a este mensaje
#10 Héctor Miguel
15/12/2003 - 22:22 | Informe spam
hola, Mario Alberto !

... en la linea del Case 1: es donde me arroja el error 13 El tipo no coincide [...]
Case 1: .Range("Num") = _
Workbooks("BDL").Worksheets("Hoja1").Range("a1").Offset(Application.Match(9.9999999999E+307,Columns("a:a")) - 1) + 1



el problema 'realmente' es que se esta buscando el dato EN OTRO libro =>Workbooks("BDL")<= ... 'pero' ...
el rango 'de busqueda' =>Columns("a:a")<= quedo 'emparentado' con el libro 'activo' =>no le precede un 'calificador' de objeto<modifica la instruccion [del Case 1] a lo siguiente:
[... ... ...]
Case 1: .Range("Num") = _
Workbooks("BDL").Worksheets("Hoja1").Range("a1").Offset(Application.Match(9.9999999999E+307, _
Workbooks("BDL").Worksheets("Hoja1").Columns("a:a")) - 1) + 1
[... ... ...]

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