Страницы: 1
RSS
как изменить размер именованного диапазона
 
Здравствуйте. Пробую изменить размер именованного диапазона и не пойму как это лучше сделать
Код
Sub Макрос()
Set r = Range("LOG")
f = r.Columns.Count
Sheets("формы").ListObjects("LOG").Resize Range(r.Cells(0, 1), r.Cells(1, f))
End Sub
Код составил с помощью макрорекрдера
Cобственно не нравится  :
Sheets("формы").ListObjects("LOG"). или ActiveSheet.ListObjects("LOG")
из-за того, что требуется  Sheets("формы"). Зачем именованному диапазону данное уточнение, на то он и именованный что эксель понимает его разположение где либо.
Не понятно почему нельзя
r.Resize Range(r.Cells(0, 1), r.Cells(1, f)).
Короче задача состоит в уменьшении таблички по строкам до минимума. и как это сделать правильно я не пойму.
 
Цитата
Sla_0412 написал:
на то он и именованный что эксель понимает его разположение где либо
'Он' его понимает именно там, где он определен (лист/книга)
Изменено: Sanja - 25.02.2017 18:48:53
Согласие есть продукт при полном непротивлении сторон
 
Как то загадочно ответили.. Я просто не вижу разницы между  Sheets("формы").ListObjects("LOG") и Range("LOG").
 
Цитата
Sla_0412 написал: Я просто не вижу разницы
Вы путаете именованный ДИАПАЗОН и умную таблицу
Согласие есть продукт при полном непротивлении сторон
 
Может вопрос глупый, но мне кажется что умная таблица тоже является именованным диапазоном.
 
Извините, что вмешиваюсь, сам не силен в программировании, но как мне кажется диапазон - это набор ячеек, а умная таблица - объект, содержащий в себе диапазон
 
_Igor_61,спасибо за уточнение. Мотаю на ус. Еще вопрос. Как с помощью VBA правильно определить последнюю строку умной таблицы, независимо от того заполнена ли строка чем либо или нет.
 
В VBA сам только первые шаги делаю, но наверное нужно смотреть на границы диапазона таблицы (где-то должна быть какая-то переменная, указывающая на диапазон, как мне кажется, это и есть ListObjects ), прямо сейчас не смогу ответить, пока не знаю   :)
 
Sla_0412, вопрос про последнюю строку в умной таблице какое отношение имеет к ЭТОЙ теме?
 
Да измучился я с табличкой одной
Проблема вот с этим кодом
Код
Sub создать_конструкцию()
Set tb = Range("LOG")
Sheets("формы").Select
Application.ScreenUpdating = False
Konstr.Show
l = Konstr.TB_W.Value
h = Konstr.TB_H.Value
sys = Konstr.CBsystem.Value
DELZAP
  If Konstr.CBtip = "окно" Then
tb.Cells(1, 3) = "RAM"
tb.Cells(1, 4) = h
tb.Cells(1, 14) = Mid(Konstr.CBartkon, InStrRev(Konstr.CBartkon, ":", Len(Konstr.CBartkon)) + 1, Len(Konstr.CBartkon) - InStrRev(Konstr.CBartkon, ":", Len(Konstr.CBartkon)))
tb.Cells(1, 15) = Konstr.CBcoat
tb.Cells(1, 16) = 2
tb.Cells(2, 3) = "RAM"
tb.Cells(2, 4) = l
tb.Cells(2, 14) = tb.Cells(1, 14)
tb.Cells(2, 15) = Konstr.CBcoat
tb.Cells(2, 16) = 2
Else
Exit Sub
End If
St = tb.Rows.Count + 1
tb.Cells(St, 2) = "Р-Р-Р-Р"
tb.Cells(St, 3) = "ZAP1"
tb.Cells(St, 4) = l
tb.Cells(St, 5) = h
tb.Cells(St, 6) = 0 '(лв)
tb.Cells(St, 7) = 0 '(лв)
tb.Cells(St, 8) = 0 '(лн)
tb.Cells(St, 9) = h '(лн)
tb.Cells(St, 10) = l ' (пв)
tb.Cells(St, 11) = 0 ' (пв)
tb.Cells(St, 12) = l ' (пн)
tb.Cells(St, 13) = h ' (пн)
 Exit Sub
в строке
St = tb.Rows.Count + 1
st определяется не правильно, но как только данная строка меняется на
St = Range("LOG").Rows.Count + 1
все зер гут.
Вот и думаю почему Set tb = Range("LOG") не отрабатывает как мне надо
Страницы: 1
Наверх