VALIDAR NUMEROS EN MSFLEXGRID
Publicado por CATITA ZARATE (1 intervención) el 13/01/2006 23:28:28
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.
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.
Valora esta pregunta


0