VALIDAR NUMEROS EN MSFLEXGRID
Publicado por CATITA ZARATE (1 intervención) el 17/01/2006 23:00:42
Hola a todos quisiera que me ayuden en este problema: que el numero que ingreso en la celda de la columna 6 sea menor que el de la columna 5 ; lo he hecho de la siguiente manera
If IsNumeric(.TextMatrix(.Row, 6)) < IsNumeric(.TextMatrix(.Row, 5)) Then
O de esta otra manera;
If .TextMatrix(.Row, 6) < .TextMatrix(.Row, 5) Then
Pero no me resulta.
por si acaso le mando todo el codigo completo donde me funciona perfectamente bien ,
como les explico ahí abajo o sea, se pone de color rojo al ingresar solamente numeros
pero no como yo quiero (que ingrese solamente si es menor que el de la columna 5)
Private Sub MSFlexGrid1_keypress(keyascii As Integer)
‘digitar datos en celda de msflexgrid
If keyascii >= 32 And keyascii <= 127 And MSFlexGrid1.Col = 6 Then
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(keyascii)
End If
Select Case keyascii
‘Activa la tecla enter
Case vbKeyReturn, vbKeyTab
With MSFlexGrid1
'mueve para la proxima celda(al hacer enter se abre o se muestra la columna 6 ) .
If ((.Col + 6 < .cols - 1) Or .Col = 5) Then
.ColWidth(6) = 960
.Col = .Col + 1
ElseIf .Col = 6 Then
For Z = 1 To .Rows - 1
.Row = Z
‘si el dato ingresado es numero (al hacer enter se pinta de color rojo el numero y verde toda la fila completa )
If IsNumeric(.TextMatrix(.Row, 6)) Then ‘aqui es donde hay que corregir el codigo
.CellForeColor = vbRed
For A = 1 To .cols - 1
.Col = A
.CellBackColor = RGB(100, 184, 150)
.Col = 6
Next A
End If
Next Z
End If
End With
End Select
End Sub
'Permite borrar
Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
'manipular las teclas Supr (Del) y Retroceso (BackSpace)
If MSFlexGrid1.Col = 6 Then
Select Case KeyCode
Case vbKeyDelete
MSFlexGrid1.Text = ""
Case vbKeyBack
If Len(MSFlexGrid1.Text) > 0 Then
MSFlexGrid1.Text = Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1)
End If
End Select
End If
End Sub
'claro esta que despues tienes que actualizar la base de datos,
'en función de lo que haya modificado el usuario.
NOTA: para RAMON
for z es para que recorra fila por fila, y la solucion que tu me das no hace nada
de lo que pido la idea es que al hacer enter en la columna 5 se active la columna 6 y luego al ingresar un numero en la columna 6 que sea menor que la columna 5 se pinte de color rojo y si ingreso numero mayor que no se pinte
If IsNumeric(.TextMatrix(.Row, 6)) < IsNumeric(.TextMatrix(.Row, 5)) Then
O de esta otra manera;
If .TextMatrix(.Row, 6) < .TextMatrix(.Row, 5) Then
Pero no me resulta.
por si acaso le mando todo el codigo completo donde me funciona perfectamente bien ,
como les explico ahí abajo o sea, se pone de color rojo al ingresar solamente numeros
pero no como yo quiero (que ingrese solamente si es menor que el de la columna 5)
Private Sub MSFlexGrid1_keypress(keyascii As Integer)
‘digitar datos en celda de msflexgrid
If keyascii >= 32 And keyascii <= 127 And MSFlexGrid1.Col = 6 Then
MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(keyascii)
End If
Select Case keyascii
‘Activa la tecla enter
Case vbKeyReturn, vbKeyTab
With MSFlexGrid1
'mueve para la proxima celda(al hacer enter se abre o se muestra la columna 6 ) .
If ((.Col + 6 < .cols - 1) Or .Col = 5) Then
.ColWidth(6) = 960
.Col = .Col + 1
ElseIf .Col = 6 Then
For Z = 1 To .Rows - 1
.Row = Z
‘si el dato ingresado es numero (al hacer enter se pinta de color rojo el numero y verde toda la fila completa )
If IsNumeric(.TextMatrix(.Row, 6)) Then ‘aqui es donde hay que corregir el codigo
.CellForeColor = vbRed
For A = 1 To .cols - 1
.Col = A
.CellBackColor = RGB(100, 184, 150)
.Col = 6
Next A
End If
Next Z
End If
End With
End Select
End Sub
'Permite borrar
Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
'manipular las teclas Supr (Del) y Retroceso (BackSpace)
If MSFlexGrid1.Col = 6 Then
Select Case KeyCode
Case vbKeyDelete
MSFlexGrid1.Text = ""
Case vbKeyBack
If Len(MSFlexGrid1.Text) > 0 Then
MSFlexGrid1.Text = Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1)
End If
End Select
End If
End Sub
'claro esta que despues tienes que actualizar la base de datos,
'en función de lo que haya modificado el usuario.
NOTA: para RAMON
for z es para que recorra fila por fila, y la solucion que tu me das no hace nada
de lo que pido la idea es que al hacer enter en la columna 5 se active la columna 6 y luego al ingresar un numero en la columna 6 que sea menor que la columna 5 se pinte de color rojo y si ingreso numero mayor que no se pinte
Valora esta pregunta


0