📄
字号:
CxbbGrid1.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = .Fields("YbYsje")
End If
If .Fields("YbYsje") - .Fields("YbCancelje") <> 0 Then
CxbbGrid1.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = .Fields("YbYsje") - .Fields("YbCancelje") '原币未核销金额
CxbbGrid1.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .Fields("YbYsje") - .Fields("YbCancelje") '本次核销金额
End If
Else
If .Fields("BbYsje") <> 0 Then '本币应收/应付金额
CxbbGrid1.TextMatrix(jsqte, Sydz("006", GridStr(), Szzls)) = .Fields("BbYsje")
End If
If .Fields("Bbysje") - .Fields("BbCancelje") <> 0 Then
CxbbGrid1.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls)) = .Fields("Bbysje") - .Fields("BbCancelje") '本币未核销金额
CxbbGrid1.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .Fields("Bbysje") - .Fields("BbCancelje") '本次核销金额
End If
End If
CxbbGrid1.RowHeight(jsqte) = Sjhgd
jsqte = jsqte + 1
.MoveNext
Loop
End With
']以上为用户自定义部分
End Sub
'============================金额输入过程控制============================'
'输入本次核销金额(网格1)
Private Sub CxbbGrid_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
With CxbbGrid
If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
Cancel = True
End If
If GridInt(.Col, 2) <> 0 Then
CxbbGrid.EditMaxLength = GridInt(.Col, 2)
Else
CxbbGrid.EditMaxLength = 3000
End If
End With
End Sub
Private Sub CxbbGrid_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
Call Sub_Lrxszxz(CxbbGrid, KeyAscii)
End Sub
Private Sub CxbbGrid_ChangeEdit()
With CxbbGrid
Select Case GridInt(.Col, 1)
Case 8, 11
Call Sub_Sjgskz(CxbbGrid, Xtjezws - Xtjexsws - 1, Xtjexsws)
Case 9, 12
Call Sub_Sjgskz(CxbbGrid, Xtslzws - Xtslxsws - 1, Xtslxsws)
Case 10
Call Sub_Sjgskz(CxbbGrid, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
Case Else
If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
Call Sub_Sjgskz(CxbbGrid, GridInt(.Col, 3), GridInt(.Col, 4))
End If
End Select
End With
End Sub
Private Sub CxbbGrid_AfterEdit(ByVal Row As Long, ByVal Col As Long) '事后判断用户录入有效性
With CxbbGrid
Select Case Col
Case Sydz("008", GridStr(), Szzls)
'本次核销金额不能大于单据未核销金额或等于0,如大于则自动取未核销金额填入
If (Val(.TextMatrix(Row, Col)) > Val(.TextMatrix(Row, Sydz("007", GridStr(), Szzls)))) Or Val(.TextMatrix(Row, Col)) = 0 Then
.TextMatrix(Row, Col) = .TextMatrix(Row, Sydz("007", GridStr(), Szzls))
End If
End Select
End With
End Sub
'输入本次核销金额(网格2)
Private Sub CxbbGrid1_BeforeEdit(ByVal Row As Long, ByVal Col As Long, Cancel As Boolean)
With CxbbGrid1
If Not GridBoolean1(.Col, 1) Or .Row < .FixedRows Then
Cancel = True
End If
If GridInt1(.Col, 2) <> 0 Then
CxbbGrid1.EditMaxLength = GridInt1(.Col, 2)
Else
CxbbGrid1.EditMaxLength = 3000
End If
End With
End Sub
Private Sub CxbbGrid1_KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
Call Sub_Lrxszxz(CxbbGrid1, KeyAscii)
End Sub
Private Sub CxbbGrid1_ChangeEdit()
With CxbbGrid1
Select Case GridInt1(.Col, 1)
Case 8, 11
Call Sub_Sjgskz(CxbbGrid1, Xtjezws - Xtjexsws - 1, Xtjexsws)
Case 9, 12
Call Sub_Sjgskz(CxbbGrid1, Xtslzws - Xtslxsws - 1, Xtslxsws)
Case 10
Call Sub_Sjgskz(CxbbGrid1, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
Case Else
If GridInt1(.Col, 3) <> 0 Or GridInt1(.Col, 4) <> 0 Then
Call Sub_Sjgskz(CxbbGrid1, GridInt1(.Col, 3), GridInt1(.Col, 4))
End If
End Select
End With
End Sub
Private Sub CxbbGrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long) '事后判断用户录入有效性
With CxbbGrid1
Select Case Col
Case Sydz("008", GridStr1(), Szzls1)
'本次核销金额不能大于单据未核销金额或等于0,如大于则自动取未核销金额填入
If (Val(.TextMatrix(Row, Col)) > Val(.TextMatrix(Row, Sydz("007", GridStr1(), Szzls1)))) Or Val(.TextMatrix(Row, Col)) = 0 Then
.TextMatrix(Row, Col) = .TextMatrix(Row, Sydz("007", GridStr1(), Szzls1))
End If
End Select
End With
End Sub
'公用数值控制函数
Private Sub Sub_Lrxszxz(WglrGrid As VSFlexGrid, lrzfasc As Integer) '网格录入带有小数位及正负号数值字段
If Not ((Chr(lrzfasc) >= "0" And Chr(lrzfasc) <= "9") Or (Chr(lrzfasc) = "." And InStr(1, WglrGrid.EditText, ".") = 0) Or lrzfasc = vbKeyBack Or (Chr(lrzfasc) = "-" And WglrGrid.EditSelStart = 0)) Then
lrzfasc = 0
End If
End Sub
Private Sub Sub_Sjgskz(WglrGrid As VSFlexGrid, zsws As Integer, xsws As Integer) '保证数值录入字段录入格式
Dim xsdwz%, bccrd%
xsdwz = InStr(1, WglrGrid.EditText, ".")
bccrd = WglrGrid.EditSelStart
If xsdwz = 0 Then
WglrGrid.EditText = Mid(WglrGrid.EditText, 1, zsws)
WglrGrid.EditSelStart = bccrd
Exit Sub
End If
If zsws > xsdwz - 1 Then
Zswstr = Mid(WglrGrid.EditText, 1, xsdwz - 1)
Else
Zswstr = Mid(WglrGrid.EditText, 1, zsws)
End If
xswstr = Mid(WglrGrid.EditText, xsdwz + 1, xsws)
WglrGrid.EditText = Zswstr + "." + xswstr
WglrGrid.EditSelStart = bccrd
End Sub
'以下为网格选中操作
Private Sub CxbbGrid_DblClick()
With CxbbGrid
CxbbGrid.EditCell '调用网格编辑方法
If .Row < .FixedRows Or .Col <> Sydz("002", GridStr(), Szzls) Then
Exit Sub
End If
If CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) Then
CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) = False
Else
CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) = True
End If
End With
End Sub
Private Sub CxbbGrid_KeyPress(KeyAscii As Integer) '用户按空格表示切换,按回车表示选中
With CxbbGrid
If .Row < .FixedRows Or .Col <> Sydz("002", GridStr(), Szzls) Then
Exit Sub
End If
If Chr(KeyAscii) = " " Then
Call CxbbGrid_DblClick
End If
If KeyAscii = vbKeyReturn Then
CxbbGrid.TextMatrix(.Row, Sydz("002", GridStr(), Szzls)) = True
End If
End With
End Sub
Private Sub CxbbGrid1_DblClick()
CxbbGrid1.EditCell '调用网格编辑方法
With CxbbGrid1
If .Row < .FixedRows Or .Col <> Sydz("002", GridStr1(), Szzls1) Then
Exit Sub
End If
If CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) Then
CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) = False
Else
CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) = True
End If
End With
End Sub
Private Sub CxbbGrid1_KeyPress(KeyAscii As Integer) '用户按空格表示切换,按回车表示选中
With CxbbGrid1
If .Row < .FixedRows Or .Col <> Sydz("002", GridStr1(), Szzls1) Then
Exit Sub
End If
If Chr(KeyAscii) = " " Then
Call CxbbGrid1_DblClick
End If
If KeyAscii = vbKeyReturn Then
CxbbGrid1.TextMatrix(.Row, Sydz("002", GridStr1(), Szzls1)) = True
End If
End With
End Sub
Private Sub Sub_SelectAll() '全选
With CxbbGrid
For jsqte = .FixedRows To .Rows - 1
CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = True
Next jsqte
End With
With CxbbGrid1
For jsqte = .FixedRows To .Rows - 1
CxbbGrid1.TextMatrix(jsqte, Sydz("002", GridStr1(), Szzls1)) = True
Next jsqte
End With
End Sub
Private Sub Sub_AbandonAll() '全消
With CxbbGrid
For jsqte = .FixedRows To .Rows - 1
CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = False
Next jsqte
End With
With CxbbGrid1
For jsqte = .FixedRows To .Rows - 1
CxbbGrid1.TextMatrix(jsqte, Sydz("002", GridStr1(), Szzls1)) = False
Next jsqte
End With
End Sub
Private Sub Sub_AutoSelect() '自动
Dim Dbl_Yskhj As Double '网格(应收款)未核销金额合计
Dim Dbl_Dkhj As Double '网格(到款、退款、预收款、应付款)未核销金额合计
'先判断以哪方金额为核销基准(以金额小的一方)
With CxbbGrid
For jsqte = .FixedRows To .Rows - 1
Dbl_Yskhj = Dbl_Yskhj + Val(.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)))
Next jsqte
End With
With CxbbGrid1
For jsqte = .FixedRows To .Rows - 1
Dbl_Dkhj = Dbl_Dkhj + Val(.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)))
Next jsqte
End With
If Dbl_Yskhj >= Dbl_Dkhj Then
With CxbbGrid1
For jsqte = .FixedRows To .Rows - 1
CxbbGrid1.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = True
.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .TextMatrix(jsqte, Sydz("007", GridStr(), Szzls))
Next jsqte
End With
With CxbbGrid
For jsqte = .FixedRows To .Rows - 1
If Dbl_Dkhj <> 0 Then
CxbbGrid.TextMatrix(jsqte, Sydz("002", GridStr(), Szzls)) = True
If Dbl_Dkhj > Val(.TextMatrix(jsqte, Sydz("007", GridStr(), Szzls))) Then
.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = .TextMatrix(jsqte, Sydz("007", GridStr(), Szzls))
Else
.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)) = Dbl_Dkhj
End If
Dbl_Dkhj = Dbl_Dkhj - Val(.TextMatrix(jsqte, Sydz("008", GridStr(), Szzls)))
End If
Next jsqte
End With
Else
With CxbbGrid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -