我遇到了这个问题,根据下一行的值设置了一个单元格值。
例如;
Remarks Reference
A 50
A 25
B 5
-25
案例1:
如果列中的Next Cell.Row的值"参考"是一个正数,然后是列"备注"中的cell.row的值。是" A"。
案例2:
如果列中的Next Cell.Row的值"参考"是一个负数,然后是列#34;备注"中的cell.row的值。是" B"。
我已经尝试过这段代码,但我无法得到我需要的结果。
Dim Bal As Decimal = 0
For Each r As DataGridViewRow In dgvSTSub.Rows
Bal = Bal + r.Cells(3).Value - r.Cells(1).Value
r.Cells(3).Value = Bal
If Bal > 0 Then
r.Cells(2).Value = Bal
ElseIf Bal < 0 Then
r.Cells(2).Value = r.Cells(3).Value
End If
Next
请与我分享一些如何操作的代码。
答案 0 :(得分:1)
首先,我建议使用For
循环而不是ForEach
,因为迭代行变得更加方便和容易。
其次,在访问ColumnNames
时使用Index
代替.Cells
,例如:使用.Cells("reference")
(引用是列名称)而不是.Cells(1)
。我建议这样做,因为如果您将来碰巧重新排序列,您的方法和函数将不会受到阻碍,除非您更改列的名称。
注意:此处的ColumnName不是您在DataGridView UI中看到的标题文本。 (希望你已经知道)
由于你没有显示你在哪里设置评论,这应该让你知道如何实现它:
For index = 0 To DataGridView1.RowCount - 1
Dim nxt = 1
If (index + 1 < DataGridView1.RowCount) Then
nxt = DataGridView1.Rows(index + 1).Cells("reference").Value
End If
If (nxt) > 0 Then
DataGridView1.Rows(index).Cells("remark").Value = "A"
Else
DataGridView1.Rows(index).Cells("remark").Value = "B"
End If
Next
虚拟输出:
Remark Reference
A 13
B 21
A -33
B 41
A -54