none
Сортировка по столбцам таблицы (MS Excel) RRS feed

  • Общие обсуждения

  • Отсортировать в каждом столбце диапазона ячейки с числовыми данными. Ячейки с нечисловыми данными и пустые не должны перемещаться. Реализовать в отдельном методе запись формул рабочего листа для определения сумм элементов строк, значения которых меньше нуля.
    Когда я нажимаю на кнопку "Решение", у меня ничего не происходит! Помогите мне. Я не знаю, как решить проблему того что ничего не происходит, когда я нажимаю на кнопку "Решение".

    Public Class ЛистДиапазон
        Private Sub btn_reshenie_Click(sender As System.Object, e As System.EventArgs) Handles btn_reshenie.Click
            Dim Диапазон As КлассДиапазон = New КлассДиапазон(Me.Range("diapozonrange"),
                                                              Me.Range("sumelstr"))
            Диапазон.Обработать()
        End Sub
    End Class
    Class КлассДиапазон
        'Свойство содержащее ссылку на диапазон
        Private diapozonrange As Excel.Range
        Private sumelstr As Excel.Range
        'Конструктор класса (создает экземпляр класса)
        Sub New(diapozonrange As Excel.Range, sumelstr As Excel.Range)
            'Инициализация свойства класса
            Me.diapozonrange = diapozonrange
            Me.sumelstr = sumelstr
        End Sub
    
        'Метод для сортировки ячеек в каждом столбце с числовыми данными и записи формул рабочего листа для определения сумм элементов строк, значения которых меньше нуля.
        Sub Обработать()
            Try
                Dim i, j As Long
                Dim temp As Long
                For j = 1 To diapozonrange.Columns.Count
                    For i = 1 To diapozonrange.Rows.Count - 1
                        If IsNumeric(diapozonrange.Cells(i, j)) Then
                            If IsNothing(diapozonrange.Cells(i, j)) Then
                                If (diapozonrange.Cells(i, j) > diapozonrange.Cells(i, j + 1)) Then
                                    temp = diapozonrange(i, j)
                                    diapozonrange(i, j) = diapozonrange(i, j + 1)
                                    diapozonrange(i, j + 1) = temp
                                End If
                            End If
                        End If
                    Next i
                Next j
    
                For i = 1 To diapozonrange.Rows.Count
                    If i < 0 Then
                        sumelstr.Cells(i).formula = "SUM(" & diapozonrange.Rows(i).address(False, False) & ")"
                    End If
                Next i
    
            Catch ex As Exception
                MessageBox.Show(text:=ex.Message,
                                buttons:=MessageBoxButtons.OK,
                               caption:="Ошибка данных",
                               icon:=MessageBoxIcon.Error)
            End Try
        End Sub
    End Class
    20 октября 2017 г. 17:05