Добрый день всем!!! Помогите реализовать задумку (сам смог лишь к этому прийти - не без помощи интеренета)
[vba]
Код
Sub Макрос1() With Sheets("Лист1").ListObjects("Таблица1") .ListRows.Add End With End Sub
[/vba]
Имеется таблица (в некоторых столбцах имеются формулы) 5 строк в данной таблице никогда не удаляются Задача: в ячейке Е1 значение (условие) которое говорит о количестве строк в данной таблице (оно не будет ниже 5 - никогда) Задача дополнить нужное количество строк чтоб реализовать условие
Заранее спасибо огромное всем кто откликнется
Добрый день всем!!! Помогите реализовать задумку (сам смог лишь к этому прийти - не без помощи интеренета)
[vba]
Код
Sub Макрос1() With Sheets("Лист1").ListObjects("Таблица1") .ListRows.Add End With End Sub
[/vba]
Имеется таблица (в некоторых столбцах имеются формулы) 5 строк в данной таблице никогда не удаляются Задача: в ячейке Е1 значение (условие) которое говорит о количестве строк в данной таблице (оно не будет ниже 5 - никогда) Задача дополнить нужное количество строк чтоб реализовать условие
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value If n_ <= 5 Then Exit Sub Set tb = ActiveSheet.ListObjects("Таблица1") nr_ = tb.ListRows.Count ndob_ = n_ - nr_ If ndob_ < 1 Then MsgBox "В таблице уже есть " & n_ & " строк" Exit Sub End If Application.ScreenUpdating = 0 Application.Calculation = 3 tb.ShowTotals = True Cells(Range(tb).Row + nr_, 1).Resize(ndob_).EntireRow.Insert tb.ShowTotals = False Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
[vba]
Код
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value If n_ <= 5 Then Exit Sub Set tb = ActiveSheet.ListObjects("Таблица1") nr_ = tb.ListRows.Count ndob_ = n_ - nr_ If ndob_ < 1 Then MsgBox "В таблице уже есть " & n_ & " строк" Exit Sub End If Application.ScreenUpdating = 0 Application.Calculation = 3 tb.ShowTotals = True Cells(Range(tb).Row + nr_, 1).Resize(ndob_).EntireRow.Insert tb.ShowTotals = False Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
_Boroda_, спасибо огромное!!! Я дико извеняюсь!!! Не могли бы помочь разобраться (просто расписал комментариями):
[vba]
Код
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value 'значение в ячеке для условия (в дальнейшем используется как n_) If n_ <= 5 Then Exit Sub 'само условие что меньше 5 нельзя (так что ли!?) Set tb = ActiveSheet.ListObjects("Таблица1") 'Присваивается переменный диапазон ячеек с помощью оператора Set nr_ = tb.ListRows.Count ndob_ = n_ - nr_ 'вычисления амортизации (вроде как!?)параметра n_ If ndob_ < 1 Then 'и если n_ просчитает амартизацию и оно будет (чет запутался) MsgBox "В таблице уже есть " & n_ & " строк" Exit Sub End If Application.ScreenUpdating = 0 Application.Calculation = 3 tb.ShowTotals = True 'Получает или задает логическое значение, указывающее, видна ли общая строка Cells(Range(tb).Row + nr_, 1).Resize(ndob_).EntireRow.Insert tb.ShowTotals = False 'Получает или задает логическое значение, указывающее, видна ли общая строка Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
Но не могли бы дополнить данный код не
Цитата
MsgBox
а удалением строк
Данная таблица ни когда не будет меньше 5 основных строк - она может дополнятся - она может уменьшаться /удаляться до нужных количеств строк в зависимости от ячейки Е1(условие)
А так прям на УРА СПАСИБО ОГРОМНЕЙШЕЕ
_Boroda_, спасибо огромное!!! Я дико извеняюсь!!! Не могли бы помочь разобраться (просто расписал комментариями):
[vba]
Код
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value 'значение в ячеке для условия (в дальнейшем используется как n_) If n_ <= 5 Then Exit Sub 'само условие что меньше 5 нельзя (так что ли!?) Set tb = ActiveSheet.ListObjects("Таблица1") 'Присваивается переменный диапазон ячеек с помощью оператора Set nr_ = tb.ListRows.Count ndob_ = n_ - nr_ 'вычисления амортизации (вроде как!?)параметра n_ If ndob_ < 1 Then 'и если n_ просчитает амартизацию и оно будет (чет запутался) MsgBox "В таблице уже есть " & n_ & " строк" Exit Sub End If Application.ScreenUpdating = 0 Application.Calculation = 3 tb.ShowTotals = True 'Получает или задает логическое значение, указывающее, видна ли общая строка Cells(Range(tb).Row + nr_, 1).Resize(ndob_).EntireRow.Insert tb.ShowTotals = False 'Получает или задает логическое значение, указывающее, видна ли общая строка Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
Но не могли бы дополнить данный код не
Цитата
MsgBox
а удалением строк
Данная таблица ни когда не будет меньше 5 основных строк - она может дополнятся - она может уменьшаться /удаляться до нужных количеств строк в зависимости от ячейки Е1(условие)
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value 'значение в ячеке для условия (в дальнейшем используется как n_) If n_ <= 5 Then Exit Sub 'само условие что меньше 5 нельзя (так что ли!?) Set tb = ActiveSheet.ListObjects("Таблица1") 'Присваивается переменный диапазон ячеек с помощью оператора Set nr_ = tb.ListRows.Count ndob_ = n_ - nr_ 'вычисления амортизации (вроде как!?)параметра n_ If ndob_ <= 1 Then
Rows("13:" & nr_ - 1).Delete xlShiftUp 'и если n_ просчитает амартизацию и оно будет (чет запутался) MsgBox "В таблице уже есть " & n_ & " строк" Exit Sub End If
Application.ScreenUpdating = 0 Application.Calculation = 3 tb.ShowTotals = True 'Получает или задает логическое значение, указывающее, видна ли общая строка Cells(Range(tb).Row + nr_, 1).Resize(ndob_).EntireRow.Insert tb.ShowTotals = False 'Получает или задает логическое значение, указывающее, видна ли общая строка Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
По сути срабатывает но не корретно
[vba]
Код
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value 'значение в ячеке для условия (в дальнейшем используется как n_) If n_ <= 5 Then Exit Sub 'само условие что меньше 5 нельзя (так что ли!?) Set tb = ActiveSheet.ListObjects("Таблица1") 'Присваивается переменный диапазон ячеек с помощью оператора Set nr_ = tb.ListRows.Count ndob_ = n_ - nr_ 'вычисления амортизации (вроде как!?)параметра n_ If ndob_ <= 1 Then
Rows("13:" & nr_ - 1).Delete xlShiftUp 'и если n_ просчитает амартизацию и оно будет (чет запутался) MsgBox "В таблице уже есть " & n_ & " строк" Exit Sub End If
Application.ScreenUpdating = 0 Application.Calculation = 3 tb.ShowTotals = True 'Получает или задает логическое значение, указывающее, видна ли общая строка Cells(Range(tb).Row + nr_, 1).Resize(ndob_).EntireRow.Insert tb.ShowTotals = False 'Получает или задает логическое значение, указывающее, видна ли общая строка Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value If n_ < 5 Then Exit Sub Set tb = ActiveSheet.ListObjects("Таблица1") nr_ = tb.ListRows.Count ndob_ = n_ - nr_ If ndob_ Then Application.ScreenUpdating = 0 Application.Calculation = 3 If ndob_ > 0 Then For i = 1 To Abs(ndob_) tb.ListRows.Add Next i Else For i = 1 To Abs(ndob_) tb.ListRows(6).Delete Next i End If Application.Calculation = 1 Application.ScreenUpdating = 1 End If End Sub
[/vba]
[vba]
Код
Sub Макрос1() Dim tb As Object n_ = Cells(1, 5).Value If n_ < 5 Then Exit Sub Set tb = ActiveSheet.ListObjects("Таблица1") nr_ = tb.ListRows.Count ndob_ = n_ - nr_ If ndob_ Then Application.ScreenUpdating = 0 Application.Calculation = 3 If ndob_ > 0 Then For i = 1 To Abs(ndob_) tb.ListRows.Add Next i Else For i = 1 To Abs(ndob_) tb.ListRows(6).Delete Next i End If Application.Calculation = 1 Application.ScreenUpdating = 1 End If End Sub