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

#1 Héctor Miguel
08/07/2004 - 03:56 | Informe spam
hola, Oscar !

... necesito las celdas G4 y H4 con validacion y con lista desplegable.
... problema ... siempre estoy insertando filas y ... se baja por causa de cada insercion.
... como la fila 4 es nueva cada vez, cada insercion desaparece la configuracion [...]
... que esas celdas se queden "ahi" a pesar de la insercion
... que los datos se conserven en la fila no importando el numero de inserciones de fila hechas.
... esa hoja tiene ... codigos trabajando [...]
Private Sub Worksheet_SelectionChange(ByVal Target As Range) [...]



1° las 'reglas' de validacion son propiedades [o atributos] =>de la/s celda/s<= [razon por la cual...]
al insertar filas/columnas.. dichas validaciones NO 'desaparecen'... 'se van' [junto] con la/s celda/s ;)
2° si la insercion 'ocurre' [precisamente] EN la/s fila/columna de la/s celda/s 'validada/s'...
[te sugiero...] =>cambia<= las 'validaciones' por 'comboboxes' [de 'cuadro de controles']
3° la 'serie' de macros que te propongo, 'mantienen' los combos =>siempre<= 'sobre' las celdas 'g4' y 'h4'
[y SOLO 'se muestran' cuando el usuario selecciona 'esas' celdas, sin 'importar' si hubo inserciones] ;)
4° inserta los 2 combos [propuestos] y =>en tiempo de diseño<= 'ajusta' sus propiedades...
[alto, ancho, selectionmargin, etc.] para que 'se parezcan' a los combos de validaciones
5° copia los codigos propuestos en el modulo de 'esa' hoja, y haz algunas 'pruebas'
=> 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'? ;)

saludos,
hector.
en el modulo de codigo de 'la hoja' ==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 Worksheet_SelectionChange(ByVal Target As Range)
' 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 ComboBox1_Change()
ActiveCell.Select: Worksheet_Change Range("g4")
End Sub
Private Sub ComboBox2_Change()
ActiveCell.Select: Worksheet_Change Range("h4")
End Sub
Respuesta Responder a este mensaje
#2 Compumakro
08/07/2004 - 13:16 | Informe spam
Gracias Hector
Un Abrazo!

"Héctor Miguel" escribió en el mensaje
news:
hola, Oscar !

> ... necesito las celdas G4 y H4 con validacion y con lista desplegable.
> ... problema ... siempre estoy insertando filas y ... se baja por causa


de cada insercion.
> ... como la fila 4 es nueva cada vez, cada insercion desaparece la


configuracion [...]
> ... que esas celdas se queden "ahi" a pesar de la insercion
> ... que los datos se conserven en la fila no importando el numero de


inserciones de fila hechas.
> ... esa hoja tiene ... codigos trabajando [...]
> Private Sub Worksheet_SelectionChange(ByVal Target As Range) [...]

1° las 'reglas' de validacion son propiedades [o atributos] =>de la/s


celda/s<= [razon por la cual...]
al insertar filas/columnas.. dichas validaciones NO 'desaparecen'...


'se van' [junto] con la/s celda/s ;)
2° si la insercion 'ocurre' [precisamente] EN la/s fila/columna de la/s


celda/s 'validada/s'...
[te sugiero...] =>cambia<= las 'validaciones' por 'comboboxes' [de


'cuadro de controles']
3° la 'serie' de macros que te propongo, 'mantienen' los combos


=>siempre<= 'sobre' las celdas 'g4' y 'h4'
[y SOLO 'se muestran' cuando el usuario selecciona 'esas' celdas, sin


'importar' si hubo inserciones] ;)
4° inserta los 2 combos [propuestos] y =>en tiempo de diseño<= 'ajusta'


sus propiedades...
[alto, ancho, selectionmargin, etc.] para que 'se parezcan' a los


combos de validaciones
5° copia los codigos propuestos en el modulo de 'esa' hoja, y haz algunas


'pruebas'
=> 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'? ;)

saludos,
hector.
en el modulo de codigo de 'la hoja' ==> 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 Worksheet_SelectionChange(ByVal Target As Range)
' 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 ComboBox1_Change()
ActiveCell.Select: Worksheet_Change Range("g4")
End Sub
Private Sub ComboBox2_Change()
ActiveCell.Select: Worksheet_Change Range("h4")
End Sub

Respuesta Responder a este mensaje
#3 Compumakro
09/07/2004 - 16:22 | Informe spam
Hector:
Me dice que se ha detectado un nombre Ambiguo.
"Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
Corté y copié para agrupar en un solo Private Sub
Worksheet_SelectionChange(ByVal Target As Range), pero se complicó el
asunto.


Hata ahora tengo la hoja 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


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", "Sicología", "Ing. Industrial", "Contaduría",
"Trabajo Social", "Ing. Comercial", "Economía")
Lista2 = Array("FUSM", "UNINORTE", "USB", "FUSM-EM", "UNIAUTONOMA")
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 Worksheet_SelectionChange(ByVal Target As Range)
' 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 ComboBox1_Change()
ActiveCell.Select: Worksheet_Change Range("g4")
End Sub
Private Sub ComboBox2_Change()
ActiveCell.Select: Worksheet_Change Range("h4")
End Sub
Respuesta Responder a este mensaje
#4 David Canales
12/07/2004 - 02:20 | Informe spam
El siguiente codigo hara lo que pediste, asumiendo que tus listas de validacion
tienen los nombres Lista1 y Lista2:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("G4")) Is Nothing Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Lista1"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End If
If Not Intersect(Target, Range("H4")) Is Nothing Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Lista2"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End If
End Sub
Saludos, David Canales


"Compumakro" wrote in message
news:%238x$
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


Respuesta Responder a este mensaje
#5 Héctor Miguel
12/07/2004 - 07:49 | Informe spam
hola, Oscar !

Me dice que se ha detectado un nombre Ambiguo.
"Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
Corte y copie para agrupar en un solo Private Sub Worksheet_SelectionChange(ByVal Target As Range)
pero se complico el asunto [...]



disculpame si 'obvie' [demasiado] el hecho de que al ya estar usando tu el evento '_selectionchange'...
las lineas de codigo 'debian ir' EN EL MISMO procedimiento 'utilizado' :(
en este caso... [todas] las lineas [propuestas] 'debieras' =>juntarlas<= al procedimiento 'tuyo'
[preferentemente... =>el final<= de las 'acciones' que YA realizas por ese evento] ;)

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