Страницы: 1
RSS
Изменяемый диапазон для работы макроса, Работа макроса в конткретном диапазоне таблицы, с возможностью добавления строк в таблицу
 
Добрый день!
Прошу прощения, если решение уже есть на сайте. Найти то, что нужно у меня не получилось. Есть очень много похожих тем, но применить к своему случаю не смог.
Есть вопрос, который никак не удается решить:
Есть известный календарь для вноса даты, с заданным диапазоном для его работы.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B3:B15")) Is Nothing Then
x = Target.Address
UserFormCalendar.Show
End If
End Sub
Можно ли сделать данный диапазон динамическим, то есть, что бы можно было добавлять строки в таблицу?
Вариант Range("B3:B65536") не подходит, так как необходимо исключить возможность вноса даты вне таблицы.
 
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
 dim lRow&
 If Target.Cells.Count > 1 Then Exit Sub 
 lRow = Cells(Rows.Count, "B").end(xlUp).row
 If Not Intersect(Target, Range("B3:B" & lRow)) Is Nothing Then 
 x = Target.Address 
 UserFormCalendar.Show 
 End If 
End Sub
Учимся сами и помогаем другим...
 
Спасибо! Но есть одно но. Данный вариант работает только в диапазоне с заполненными данными. Если в таблице 10 строк, первые пять из которых заполнены, а следующие 5 пустые, то диапазон выбирается только до пятой строки. Первоначальный вариант таблицы не заполнен, поэтому необходимо, что бы диапазон выбирался от определенной ячейки, до последней строки и пустой и заполненной таблицы.
Изменено: Centre - 27.02.2013 22:41:19
 
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
 dim lRow&
 If Target.Cells.Count > 1 Then Exit Sub 
 lRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
 If Not Intersect(Target, Range("B3:B" & lRow)) Is Nothing Then 
 x = Target.Address 
 UserFormCalendar.Show 
 End If 
End Sub
Учимся сами и помогаем другим...
 
Спасибо огромное!
 
Добрый день!
А можно ли данное действие применить в другом макросе?
Есть простенький макрос, записанный макрорекордером. При нажатии на кнопку, в выделенные вручную ячейки, вставляется некая надпись. Необходимо же, что бы надпись можно было вставлять в определенный диапазон, в выделенные вручную ячейки. В таблицу будут добавляться строки, соответственно диапазон будет меняться. За пределами диапазона макрос работать не должен.

Sub Макрос1()
   Selection.FormulaR1C1 = "Все хорошо!"
End Sub

Диапазон текущей таблицы C3:E13.
 
не знаю как в Excel 2003, но в 2007-2010 это делается легко через "вставка - таблица". см. пример.
Учимся сами и помогаем другим...
 
Разобрался! Спасибо!
А если таблиц на листе несколько?

Sub Макрос1()
   If Not Intersect(Selection, ActiveSheet.ListObjects("Таблица1").DataBodyRange) Is Nothing Then
       Intersect(Selection, ActiveSheet.ListObjects("Таблица1").DataBodyRange).FormulaR1C1 = "Все хорошо!"
   End If
   If Not Intersect(Selection, ActiveSheet.ListObjects("Таблица2").DataBodyRange) Is Nothing Then
       Intersect(Selection, ActiveSheet.ListObjects("Таблица2").DataBodyRange).FormulaR1C1 = "Все хорошо!"
   End If
End Sub

Такой вариант работает, но как более коротко и правильно можно добавить перечисление нескольких таблиц на листе? Вопрос для саморазвития.
 
Код
Sub Макрос1()
    Dim i%
    For i = 1 To ActiveSheet.ListObjects.Count
    If Not Intersect(Selection, ActiveSheet.ListObjects(i).DataBodyRange) Is Nothing Then
        Intersect(Selection, ActiveSheet.ListObjects(i).DataBodyRange).FormulaR1C1 = "Все хорошо!"
    End If
    Next i
End Sub

Учимся сами и помогаем другим...
 
Спасибо, огромное!

В правилах сайта написано, что можно плюсовать помогающим, но что-то я не нашел, как это сделать. :(
 
Плюсы отменили. Достаточно здесь сказать спасибо :-)
Учимся сами и помогаем другим...
 
Доброго всем дня,коллеги! Подскажите чайнику простейшее.. Есть макрос,который вставляет в активную ячейку текущее время+текст. Необходимо,что бы время+текст возможно было вставить только в определенном диапазоне (н-р пару столбцов), т.к. при вставке "не туда" данные,записанные ранее удаляются,и откатиться назад уже нельзя.... Понимаю,что просто,но не могу понять как) Буду благодарен за помощь! Девочек с наступающим!!!
 
День добрый!
Как коллега коллеге советую посмотреть в сторону Intersect
Учимся сами и помогаем другим...
 
ber$erk, извиняюсь, понимаю,трачу чужое время, но я на самом "дне" в овладении данными знаниями. Достижение для меня - этот макрос :oops: :)..... Для него диапазон и нужен))) Только что создал тему на форуме..Если поможете, надо ли ее удалять? ЗЫ-шаманил пол дня с Intersect.....ничего не вышло...потому и обращаюсь. Спасибо!
Код
Sub Занято()
    ActiveCell = Format(Now, "hh:mm") & "-занято"
End Sub
Изменено: evg_glaz - 02.03.2016 15:28:15
 
evg_glaz, ЭТО Ваше ?
Согласие есть продукт при полном непротивлении сторон
 
Sanja,    8-0  нет..... Видимо то мне и надо?! Очень удивлен! Спасибо!!!
Стыдно...Не ожидал такого оперативного ответа и помощи! Спасибо большое!!!
Изменено: evg_glaz - 02.03.2016 15:32:09
Страницы: 1
Читают тему
Наверх