Validación Fija

07/07/2004 - 20:28 por Compumakro | Informe spam
Amigos de Excel:
Necesito las Celdas G4 y H4 con Validación y con lista desplegable.
El problema es que siempre estoy insertando filas y la configuración se baja
por causa de cada inserción.
En consecuencia, como la fila 4 es nueva cada vez, cada inserción,
desaparece la configuración.

G4 H4
Ing. Sistemas FUSM
Admón Empresas UNINORTE
Derecho USB
Fisioterapia FUSM-EM
Enfermería
etc

Necesito que esas celdas se queden "Ahí" a pesar de la inserción y que los
datos se conserven en la fila no importando el número de Inserciones de Fila
hechas.
Saludos

Oscar
Barranquilla

Ya esa hoja tiene los siguientes Códigos trabajando desde hace más de un
año:

*******************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 4 To 150
Cells(i, 18) = (Cells(i, 9) * Cells(i, 11)) + (Cells(i, 12) *
Cells(i, 14)) + (Cells(i, 15) * Cells(i, 17))
Next i

If Cells(4, 1) = Empty Or Cells(4, 2) = Empty Or Cells(4, 3) = Empty Or
Cells(4, 7) = Empty Or Cells(4, 8) = Empty Or Cells(4, 9) = Null Then
Cells(4, 18) = "Faltan Datos"
End If
If Cells(4, 9) > 0 And Cells(4, 8) = "FUSM" And Cells(4, 3) = "H" Then
Cells(4, 11) = 25000
End If
If Cells(4, 9) > 0 And Cells(4, 8) <> "FUSM" Then
Cells(4, 11) = 23000
End If
Cells(4, 2) = Application.Proper(Cells(4, 2))
Cells(4, 3) = UCase(Cells(4, 3))
Cells(4, 10) = UCase(Cells(4, 10))
Cells(4, 13) = UCase(Cells(4, 13))
Cells(4, 16) = UCase(Cells(4, 16))

End Sub

Preguntas similare

Leer las respuestas

#6 Compumakro
12/07/2004 - 13:52 | Informe spam
Hector:
Los ComboBox no muestran ningún nombre.
El único (es decir una sola línea) despliegue está vacío


Quedó así:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 4 To 150
Cells(i, 18) = (Cells(i, 9) * Cells(i, 11)) + (Cells(i, 12) *
Cells(i, 14)) + (Cells(i, 15) * Cells(i, 17))
Next i

If Cells(4, 1) = Empty Or Cells(4, 2) = Empty Or Cells(4, 3) = Empty Or
Cells(4, 7) = Empty Or Cells(4, 8) = Empty Or Cells(4, 9) = Null Then
Cells(4, 18) = "Faltan Datos"
End If
Cells(4, 2) = Application.Proper(Cells(4, 2))
Cells(4, 3) = UCase(Cells(4, 3))
Cells(4, 10) = UCase(Cells(4, 10))
Cells(4, 13) = UCase(Cells(4, 13))
Cells(4, 16) = UCase(Cells(4, 16))

If Cells(4, 15) = Empty Then
Range("P:Q").EntireColumn.Hidden = True
Else: Range("P:Q").EntireColumn.Hidden = False
End If

If Target.Address = "$G$4" Then
Me.ComboBox2.Visible = False
With Me.ComboBox1
.Visible = True: .LinkedCell = "G4"
.Top = Target.Top: .Left = Target.Left
End With
ElseIf Target.Address = "$H$4" Then
Me.ComboBox1.Visible = False
With Me.ComboBox2
.Visible = True: .LinkedCell = "H4"
.Top = Target.Top: .Left = Target.Left
End With
Else: Me.ComboBox1.Visible = False: Me.ComboBox2.Visible = False
End If
'Salida:
' Application.EnableEvents = True

' On Error GoTo Salida
' Application.EnableEvents = False
If Target.Address = "$G$4" Then
Me.ComboBox2.Visible = False
With Me.ComboBox1
.Visible = True: .LinkedCell = "g4"
.Top = Target.Top: .Left = Target.Left
End With
ElseIf Target.Address = "$H$4" Then
Me.ComboBox1.Visible = False
With Me.ComboBox2
.Visible = True: .LinkedCell = "h4"
.Top = Target.Top: .Left = Target.Left
End With
Else: Me.ComboBox1.Visible = False: Me.ComboBox2.Visible = False
End If
'Salida:
' Application.EnableEvents = True

End Sub
Private Sub Worksheet_Activate()
CargarListas
End Sub
Private Sub CargarListas()
Dim Lista1 As Variant, Lista2 As Variant
Lista1 = Array("Ing. Sistemas", "Admón. Empresas", "Derecho",
"Fisioterapia", "Enfermería", "etc.")
Lista2 = Array("FUSM", "UNINORTE", "USB", "FUSM-EM")
With Me.ComboBox1
.LinkedCell = "": .Clear
.List = Application.Transpose(Lista1)
.LinkedCell = "g4"
End With
With Me.ComboBox2
.LinkedCell = "": .Clear
.List = Application.Transpose(Lista2)
.LinkedCell = "h4"
End With
End Sub
Private Sub ComboBox1_Change()
ActiveCell.Select: Worksheet_Change Range("g4")
End Sub
Private Sub ComboBox2_Change()
ActiveCell.Select: Worksheet_Change Range("h4")
End Sub





Saludos
Oscar
Respuesta Responder a este mensaje
#7 Héctor Miguel
13/07/2004 - 04:50 | Informe spam
hola, Oscar !

Los ComboBox no muestran ningun nombre. El unico (es decir una sola linea) despliegue esta vacio [...]



[probablemente se 'deba a'...] ¿es la 'unica' hoja en el libro???
los combos debieran llenarse cada vez que 'activas' esa hoja 'desde otra' [hoja del mismo libro]
[esta 'puesta' en el evento '_activate' de la hoja]
el 'mejor' evento para llenar los combos dependera de tus preferencias para usar un rango, listado, matriz, etc.
como te comentaba en la 1er respuesta [acerca de los 'supuestos' que use]...
=> estoy usando algunos 'supuestos', que seguramente en la 'realidad' sean otros
[como 'llenar' los combos desde matrices en lugar de usar rangos]
=> quizas prefieras que 'el llenado' se haga en el evento '_open' del libro en lugar del '_actrivate' de la hoja
=> y [probablemente] varias 'cosillas' mas... pero... ¿comenzamos y comentas las 'fallas'? ;)

¿comentas datos adicionales?
saludos,
hector.
Respuesta Responder a este mensaje
#8 Héctor Miguel
13/07/2004 - 06:28 | Informe spam
hola, Oscar °

Al llegar a la Hoja ... donde esta todo esto, me sale un error -2147467259 (8000 4005) en tiempo de ejecucion [...]
.LinkedCell = "": .Clear [...]



el 'fallo' en el metodo '.Clear' [para 'limpiar' el contenido del combo] se debe a que...
=> le asignaste el 'llenado' usando la propiedad 'ListFillRange' y lo esta 'buscando' en el rango especificado <si esta va a ser la 'forma' que prefieres para el llenado de los combos...
=> estan 'sobrando' los siguientes supuestos utilizados...
1.- TODO el procedimiento: =>Private Sub CargarListas()< 2.- la llamada al mismo en el evento 'worksheet_activate'
=> podras usar 'directamente' sus propiedades 'LinkedCell' y 'ListFillRange' [en vez de todo lo anterior] ;)

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#9 Héctor Miguel
14/07/2004 - 09:29 | Informe spam
hola, Oscar !

Ahora al hacer clic en una opción emerge lo siguiente:
"Error de Compilacion, no se ha definido una Sub-Funcion"
Private Sub ComboBox1_Change()
ActiveCell.Select: Worksheet_Change Range("g4")
End Sub
Igual lo hace en ComboBox2



:)) 'se debe' a una 'proteccion' que le he puesto debido a que...
al 'depositar' [en celda/s] el contenido de los combos...
NO se 'dispara' el evento '_change' de la/s hoja/s [97 a 2003] :((
[y... 'suponiendo' que le fueras a dar uso, lo he 'forzado'] ;)
sera necesario [solamente] 'tener disponible' el evento en el modulo de codigo de la hoja...
[bastara con un 'simple'...]
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida