因流水收入和支出在一个列中,正数收入放在借方金额,要把负数金额转换到贷方一列去,列类型为单精度小数,从下载的流水xls上导入
在DataColChanged写如下代码
For Each r As Row In Tables("日记帐_日记帐明细").rows
If r("日记账明细借方金额") < "0" Then
r("日记账明细贷方金额")= math.abs(r("日记账明细借方金额"))
r("日记账明细借方金额") = Nothing
End If
Next
导入后提示

此主题相关图片如下:微信图片_20250323232113.png

此主题相关图片如下:微信图片_20250323232107.png

但关闭窗体后,重新打开,格式转换功能又全部实现了,怎么写才能让它不提错误
For Each r As Row In Tables("日记帐_日记帐明细").rows
If r("日记账明细借方金额") < 0 Then
r("日记账明细贷方金额")= math.abs(r("日记账明细借方金额"))
r("日记账明细借方金额") = Nothing
End If
Next
看一下是否可行?
另外财务数据建议用高精度数据类型好一些。
[此贴子已经被作者于2025/3/24 13:42:23编辑过]
1、出错的事件代码是下面这个,不是datacolchanged

此主题相关图片如下:1.png

2、这种代码放到datacolchanged也不合理
蓝老师,按钮代码是这样的,那代码放到哪里好
Dim c As WinForm.ComboBox = e.Form.Controls("会计期间")
Dim d As WinForm.DropDownBox = e.Form.Controls("银行账号名称")
If c.Value=Nothing Then
MessageBox.Show("请输入会计期间!")
Return
Else If d.Value=Nothing Then
MessageBox.Show("请选择银行帐号名称!")
Return
Else
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter = "Excel文件|*.xlsx;*.xls;*.csv" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Dim Cols1() As Integer = {0,6,6,7,7,3,2,11} 'execl列索引从0开始
Dim Cols2() As String = {"单据头业务日期", "日记账明细借方金额", "单据头借方金额","日记账明细贷方金额","单据头贷方金额", "日记账明细对方银行账号","日记账明细对方账户名称","日记账明细摘要"}
Dim Book As New XLS.Book(dlg.FileName)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("日记帐_日记帐明细").StopRedraw()
'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count - 1
Dim bh As String = sheet(n, 0).Text
Dim r As Row = Tables("日记帐_日记帐明细").AddNew()
For m As Integer = 0 To Cols1.Length - 1
r(Cols2(m)) = Sheet(n, Cols1(m)).Value
Next
Next
Tables("日记帐_日记帐明细").ResumeRedraw()
End If
End If
应该是表格有空值,判断一下
For m As Integer = 0 To Cols1.Length - 1
if Sheet(n, Cols1(m)).text > ""
r(Cols2(m)) = Sheet(n, Cols1(m)).Value
end if
Next