Hola,
en primer lugar, gracias por responder. Apliqué el código que me sugeriste y después añadí código para que hiciera las sumas. Al final me quedo de la siguiente forma:
If DataGridView23.CurrentCell.ColumnIndex = 21 Or DataGridView23.CurrentCell.ColumnIndex = 22 Then
DataGridView23.CurrentRow.Cells(21).Value = DataGridView23.CurrentRow.Cells(21).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(22).Value = DataGridView23.CurrentRow.Cells(22).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(5).Value = DataGridView23.CurrentRow.Cells(5).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(6).Value = DataGridView23.CurrentRow.Cells(6).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(7).Value = DataGridView23.CurrentRow.Cells(7).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(8).Value = DataGridView23.CurrentRow.Cells(8).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(9).Value = DataGridView23.CurrentRow.Cells(9).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(10).Value = DataGridView23.CurrentRow.Cells(10).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(11).Value = DataGridView23.CurrentRow.Cells(11).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(12).Value = DataGridView23.CurrentRow.Cells(12).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(13).Value = DataGridView23.CurrentRow.Cells(13).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(14).Value = DataGridView23.CurrentRow.Cells(14).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(15).Value = DataGridView23.CurrentRow.Cells(15).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(16).Value = DataGridView23.CurrentRow.Cells(16).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(17).Value = DataGridView23.CurrentRow.Cells(17).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(18).Value = DataGridView23.CurrentRow.Cells(18).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(19).Value = DataGridView23.CurrentRow.Cells(19).Value.ToString.Replace(".", ",")
DataGridView23.CurrentRow.Cells(20).Value = DataGridView23.CurrentRow.Cells(20).Value.ToString.Replace(".", ",")
If String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(21).Value) And Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(22).Value) Then
Dim total As Double
total = CDbl(DataGridView23.CurrentRow.Cells(5).Value) + CDbl(DataGridView23.CurrentRow.Cells(6).Value) + CDbl(DataGridView23.CurrentRow.Cells(7).Value) + CDbl(DataGridView23.CurrentRow.Cells(8).Value) + CDbl(DataGridView23.CurrentRow.Cells(9).Value) + CDbl(DataGridView23.CurrentRow.Cells(10).Value) + CDbl(DataGridView23.CurrentRow.Cells(11).Value) + CDbl(DataGridView23.CurrentRow.Cells(12).Value) + CDbl(DataGridView23.CurrentRow.Cells(13).Value) + CDbl(DataGridView23.CurrentRow.Cells(14).Value) + CDbl(DataGridView23.CurrentRow.Cells(15).Value) + CDbl(DataGridView23.CurrentRow.Cells(16).Value) + CDbl(DataGridView23.CurrentRow.Cells(17).Value) + CDbl(DataGridView23.CurrentRow.Cells(18).Value) + CDbl(DataGridView23.CurrentRow.Cells(19).Value) + CDbl(DataGridView23.CurrentRow.Cells(20).Value) + CDbl(DataGridView23.CurrentRow.Cells(22).Value)
DataGridView23.CurrentRow.Cells(23).Value = total.ToString("n2")
End If
If String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(22).Value) And Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(21).Value) Then
Dim total As Double
total = CDbl(DataGridView23.CurrentRow.Cells(5).Value) + CDbl(DataGridView23.CurrentRow.Cells(6).Value) + CDbl(DataGridView23.CurrentRow.Cells(7).Value) + CDbl(DataGridView23.CurrentRow.Cells(8).Value) + CDbl(DataGridView23.CurrentRow.Cells(9).Value) + CDbl(DataGridView23.CurrentRow.Cells(10).Value) + CDbl(DataGridView23.CurrentRow.Cells(11).Value) + CDbl(DataGridView23.CurrentRow.Cells(12).Value) + CDbl(DataGridView23.CurrentRow.Cells(13).Value) + CDbl(DataGridView23.CurrentRow.Cells(14).Value) + CDbl(DataGridView23.CurrentRow.Cells(15).Value) + CDbl(DataGridView23.CurrentRow.Cells(16).Value) + CDbl(DataGridView23.CurrentRow.Cells(17).Value) + CDbl(DataGridView23.CurrentRow.Cells(18).Value) + CDbl(DataGridView23.CurrentRow.Cells(19).Value) + CDbl(DataGridView23.CurrentRow.Cells(20).Value) + CDbl(DataGridView23.CurrentRow.Cells(21).Value)
DataGridView23.CurrentRow.Cells(23).Value = total.ToString("n2")
End If
If Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(22).Value) And Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(21).Value) Then
Dim total As Double
total = CDbl(DataGridView23.CurrentRow.Cells(5).Value) + CDbl(DataGridView23.CurrentRow.Cells(6).Value) + CDbl(DataGridView23.CurrentRow.Cells(7).Value) + CDbl(DataGridView23.CurrentRow.Cells(8).Value) + CDbl(DataGridView23.CurrentRow.Cells(9).Value) + CDbl(DataGridView23.CurrentRow.Cells(10).Value) + CDbl(DataGridView23.CurrentRow.Cells(11).Value) + CDbl(DataGridView23.CurrentRow.Cells(12).Value) + CDbl(DataGridView23.CurrentRow.Cells(13).Value) + CDbl(DataGridView23.CurrentRow.Cells(14).Value) + CDbl(DataGridView23.CurrentRow.Cells(15).Value) + CDbl(DataGridView23.CurrentRow.Cells(16).Value) + CDbl(DataGridView23.CurrentRow.Cells(17).Value) + CDbl(DataGridView23.CurrentRow.Cells(18).Value) + CDbl(DataGridView23.CurrentRow.Cells(19).Value) + CDbl(DataGridView23.CurrentRow.Cells(20).Value) + CDbl(DataGridView23.CurrentRow.Cells(21).Value) + CDbl(DataGridView23.CurrentRow.Cells(22).Value)
DataGridView23.CurrentRow.Cells(23).Value = total.ToString("n2")
End If
End If
End If
Es algo más largo que el ejemplo que puse al principio, porque en realidad el datagridview tenía más de dos columnas.
El código básicamente hace esto:
- Primero me cambia los puntos por comas, por que es la única forma de que sume los valores.
- Después según si las dos celdas que hay que modificar son valores null o no, sumas las celdas.
Por el momento me funciona bien, pero no sé que hacer para evitar los problemas que dan las celdas con datos null. Por ejemplo en el caso de que alguno de los valores de las celdas 5 hasta 14 fuera null, entonces ya no me funcionaría.