Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Добавление примечаний c использованием макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление примечаний c использованием макроса (Макросы/Sub)
Добавление примечаний c использованием макроса
Inna13Kr Дата: Понедельник, 29.12.2014, 13:39 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Возникла необходимость добавления примечаний с использованием макроса (связывается по артикулу).
Помогите, пожалуйста, с решением такой задачи:
во вложенном файле нужно макросом на лист "АНАЛИТ" в ячейки M:M (с листа "Магазин №1", ячейки H:H), U:U (с листа "Магазин №2", ячейки H:H), AC:AC (с листа "Магазин №4", ячейки H:H), AK:AK (с листа "Магазин №6", ячейки H:H) подтягивать примечания.
К сообщению приложен файл: -AVTOZAKAZ-.xls (75.5 Kb)


Сообщение отредактировал Inna13Kr - Понедельник, 29.12.2014, 15:27
 
Ответить
СообщениеДобрый день!
Возникла необходимость добавления примечаний с использованием макроса (связывается по артикулу).
Помогите, пожалуйста, с решением такой задачи:
во вложенном файле нужно макросом на лист "АНАЛИТ" в ячейки M:M (с листа "Магазин №1", ячейки H:H), U:U (с листа "Магазин №2", ячейки H:H), AC:AC (с листа "Магазин №4", ячейки H:H), AK:AK (с листа "Магазин №6", ячейки H:H) подтягивать примечания.

Автор - Inna13Kr
Дата добавления - 29.12.2014 в 13:39
alex77755 Дата: Понедельник, 29.12.2014, 17:46 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Ну рядом же обсуждается!
http://www.excelworld.ru/forum/10-3958-1


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеНу рядом же обсуждается!
http://www.excelworld.ru/forum/10-3958-1

Автор - alex77755
Дата добавления - 29.12.2014 в 17:46
Inna13Kr Дата: Понедельник, 29.12.2014, 18:03 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
К сожалению, тема, о которой Вы пишете, уже закрыта, а макрос, предложенный в ней, не работает в моем файле: примечания проставляются на листах Магазин №1, Магазин №2, Магазин №4 и Магазин №6, а в рабочий лист АНАЛИТ почему-то не подтягиваются. :( <_<


Сообщение отредактировал Inna13Kr - Понедельник, 29.12.2014, 18:51
 
Ответить
СообщениеК сожалению, тема, о которой Вы пишете, уже закрыта, а макрос, предложенный в ней, не работает в моем файле: примечания проставляются на листах Магазин №1, Магазин №2, Магазин №4 и Магазин №6, а в рабочий лист АНАЛИТ почему-то не подтягиваются. :( <_<

Автор - Inna13Kr
Дата добавления - 29.12.2014 в 18:03
Leanna Дата: Понедельник, 29.12.2014, 19:08 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Тестируйте.

[vba]
Код
Sub Примечание()
LastCell = Cells(Rows.Count, 4).End(xlUp).Row
magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")
For j = 13 To 37 Step 8
Set sh = Sheets(magazin(m))
LastCell2 = sh.Cells(Rows.Count, 3).End(xlUp).Row
      For i = 10 To LastCell
      SKU = Cells(i, 2)
      toComm = ""
          For k = 2 To LastCell2
              If sh.Cells(k, 1) = SKU Then toComm = sh.Cells(k, 8).Value: Exit For
          Next k
      If Not Cells(i, j).Comment Is Nothing Then Cells(i, j).ClearComments
      If toComm <> "" Then
          Cells(i, j).NoteText Text:=toComm
          Cells(i, j).Comment.Shape.TextFrame.AutoSize = True
      End If
      Next i
m = m + 1
Next j
End Sub
[/vba]
К сообщению приложен файл: 0163146.xls (92.0 Kb)


Лучше день потерять, потом за пять минут долететь!

Сообщение отредактировал Leanna - Понедельник, 29.12.2014, 19:30
 
Ответить
СообщениеТестируйте.

[vba]
Код
Sub Примечание()
LastCell = Cells(Rows.Count, 4).End(xlUp).Row
magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")
For j = 13 To 37 Step 8
Set sh = Sheets(magazin(m))
LastCell2 = sh.Cells(Rows.Count, 3).End(xlUp).Row
      For i = 10 To LastCell
      SKU = Cells(i, 2)
      toComm = ""
          For k = 2 To LastCell2
              If sh.Cells(k, 1) = SKU Then toComm = sh.Cells(k, 8).Value: Exit For
          Next k
      If Not Cells(i, j).Comment Is Nothing Then Cells(i, j).ClearComments
      If toComm <> "" Then
          Cells(i, j).NoteText Text:=toComm
          Cells(i, j).Comment.Shape.TextFrame.AutoSize = True
      End If
      Next i
m = m + 1
Next j
End Sub
[/vba]

Автор - Leanna
Дата добавления - 29.12.2014 в 19:08
Inna13Kr Дата: Вторник, 30.12.2014, 12:57 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Leanna, спасибо. Макрос работает, только виснет (подтягивает инфу около 2-3 мин)... В чем может быть проблема, не подскажете?
ЕЩЕ ИНТЕРЕСУЕТ ВОПРОС: как можно прописать аналогичный макрос с использованием функции VLookup?


Сообщение отредактировал Inna13Kr - Вторник, 30.12.2014, 14:15
 
Ответить
СообщениеLeanna, спасибо. Макрос работает, только виснет (подтягивает инфу около 2-3 мин)... В чем может быть проблема, не подскажете?
ЕЩЕ ИНТЕРЕСУЕТ ВОПРОС: как можно прописать аналогичный макрос с использованием функции VLookup?

Автор - Inna13Kr
Дата добавления - 30.12.2014 в 12:57
Leanna Дата: Вторник, 30.12.2014, 14:39 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Перевела в массив обращения, попробуйте, должно быть побыстрее, если будет долго сделаю c Vlookup. (ps не уверена что vlookup убыстрит)
[vba]
Код
Sub Примечание()
Dim key1, result1, SKU
LastCell = Cells(Rows.Count, 4).End(xlUp).Row
magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")
For j = 13 To 37 Step 8
Set sh = Sheets(magazin(m))
LastCell2 = sh.Cells(Rows.Count, 3).End(xlUp).Row
key1 = sh.Range("A2:A" & LastCell2).Value
result1 = sh.Range("H2:H" & LastCell2).Value
SKU = [B1].Resize(LastCell, 1).Value
     For i = 10 To LastCell
     toComm = ""
         For k = 1 To UBound(key1)
             If key1(k, 1) * 1 = SKU(i, 1) * 1 Then toComm = result1(k, 1): Exit For
         Next k
     If toComm = "" And Not Cells(i, j).Comment Is Nothing Then Cells(i, j).ClearComments
     If toComm <> "" Then
         Cells(i, j).NoteText Text:=toComm
         Cells(i, j).Comment.Shape.TextFrame.AutoSize = True
     End If
     Next i
m = m + 1
Next j
End Sub
[/vba]
К сообщению приложен файл: 4002033.xls (98.5 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеПеревела в массив обращения, попробуйте, должно быть побыстрее, если будет долго сделаю c Vlookup. (ps не уверена что vlookup убыстрит)
[vba]
Код
Sub Примечание()
Dim key1, result1, SKU
LastCell = Cells(Rows.Count, 4).End(xlUp).Row
magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")
For j = 13 To 37 Step 8
Set sh = Sheets(magazin(m))
LastCell2 = sh.Cells(Rows.Count, 3).End(xlUp).Row
key1 = sh.Range("A2:A" & LastCell2).Value
result1 = sh.Range("H2:H" & LastCell2).Value
SKU = [B1].Resize(LastCell, 1).Value
     For i = 10 To LastCell
     toComm = ""
         For k = 1 To UBound(key1)
             If key1(k, 1) * 1 = SKU(i, 1) * 1 Then toComm = result1(k, 1): Exit For
         Next k
     If toComm = "" And Not Cells(i, j).Comment Is Nothing Then Cells(i, j).ClearComments
     If toComm <> "" Then
         Cells(i, j).NoteText Text:=toComm
         Cells(i, j).Comment.Shape.TextFrame.AutoSize = True
     End If
     Next i
m = m + 1
Next j
End Sub
[/vba]

Автор - Leanna
Дата добавления - 30.12.2014 в 14:39
Leanna Дата: Вторник, 30.12.2014, 15:09 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
А это с VLookup, скажите какой побыстрее отрабатывает
[vba]
Код
Sub Примечание()
Dim key1, result1, SKU
LastCell = Cells(Rows.Count, 4).End(xlUp).Row
magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")
For j = 13 To 37 Step 8
Set sh = Sheets(magazin(m))
LastCell2 = sh.Cells(Rows.Count, 3).End(xlUp).Row
key1 = sh.Range("A2:H" & LastCell2).Value
SKU = [B1].Resize(LastCell, 1).Value
     For i = 10 To LastCell
     On Error Resume Next
     toComm = Trim(Application.WorksheetFunction.VLookup(SKU(i, 1) * 1, key1, 8, 0))
     If Err <> 0 Then toComm = ""
     If toComm <> "" Then
         Cells(i, j).NoteText Text:=toComm
         Cells(i, j).Comment.Shape.TextFrame.AutoSize = True
     End If
     If toComm = "" And Not Cells(i, j).Comment Is Nothing Then Cells(i, j).ClearComments
     On Error GoTo 0
     Next i
m = m + 1
Next j
End Sub
[/vba]
К сообщению приложен файл: 4176843.xls (91.5 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеА это с VLookup, скажите какой побыстрее отрабатывает
[vba]
Код
Sub Примечание()
Dim key1, result1, SKU
LastCell = Cells(Rows.Count, 4).End(xlUp).Row
magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")
For j = 13 To 37 Step 8
Set sh = Sheets(magazin(m))
LastCell2 = sh.Cells(Rows.Count, 3).End(xlUp).Row
key1 = sh.Range("A2:H" & LastCell2).Value
SKU = [B1].Resize(LastCell, 1).Value
     For i = 10 To LastCell
     On Error Resume Next
     toComm = Trim(Application.WorksheetFunction.VLookup(SKU(i, 1) * 1, key1, 8, 0))
     If Err <> 0 Then toComm = ""
     If toComm <> "" Then
         Cells(i, j).NoteText Text:=toComm
         Cells(i, j).Comment.Shape.TextFrame.AutoSize = True
     End If
     If toComm = "" And Not Cells(i, j).Comment Is Nothing Then Cells(i, j).ClearComments
     On Error GoTo 0
     Next i
m = m + 1
Next j
End Sub
[/vba]

Автор - Leanna
Дата добавления - 30.12.2014 в 15:09
Leanna Дата: Вторник, 30.12.2014, 15:44 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Ещё можно добавить команды, для быстроты. Этот самым быстрым должен быть.
[vba]
Код
Application.ScreenUpdating = False
Application.EnableEvents = False
[/vba]
К сообщению приложен файл: 4002033.rar (19.8 Kb)


Лучше день потерять, потом за пять минут долететь!

Сообщение отредактировал Leanna - Вторник, 30.12.2014, 15:45
 
Ответить
СообщениеЕщё можно добавить команды, для быстроты. Этот самым быстрым должен быть.
[vba]
Код
Application.ScreenUpdating = False
Application.EnableEvents = False
[/vba]

Автор - Leanna
Дата добавления - 30.12.2014 в 15:44
Inna13Kr Дата: Вторник, 30.12.2014, 17:41 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Leanna, при использовании 2-ого и 3-го вариантов- все равно подвисает. Возможно, много строк- 4000?
При запуске последнего выдает ошибку "Type mismatch (Error 13)", нажимаю End-проставляются примечания только в столбце М.


Сообщение отредактировал Inna13Kr - Вторник, 30.12.2014, 17:43
 
Ответить
СообщениеLeanna, при использовании 2-ого и 3-го вариантов- все равно подвисает. Возможно, много строк- 4000?
При запуске последнего выдает ошибку "Type mismatch (Error 13)", нажимаю End-проставляются примечания только в столбце М.

Автор - Inna13Kr
Дата добавления - 30.12.2014 в 17:41
Leanna Дата: Вторник, 30.12.2014, 17:46 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Попробуйте ещё раз (во вложении), должно быть без ошибки.
К сообщению приложен файл: 4002033-1-.xls (93.0 Kb)


Лучше день потерять, потом за пять минут долететь!

Сообщение отредактировал Leanna - Вторник, 30.12.2014, 17:50
 
Ответить
СообщениеПопробуйте ещё раз (во вложении), должно быть без ошибки.

Автор - Leanna
Дата добавления - 30.12.2014 в 17:46
Hugo Дата: Вторник, 30.12.2014, 23:51 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Работа с ячейками - всегда долго. А работа с примечаниями - это работа с ячейками, и даже хуже...
Поэтому быстро не будет. Может быть можно к массивам ещё и словарь привлечь (не вникал, может и не можно...) - но всё равно это ускорит на пару секунд, что на минуте работы с примечаниями не скажется.

P.S. Посмотрел - можно словарь привлечь: запоминаем в словаре адреса ячеек для ключей артикул-лист, затем циклом по данным-массивам листов если находим необходимость писать комментарий - пишем по адресу из словаря.
Предварительно можно молча стереть скопом все примечания - так быстрее. Если конечно это нужно по задаче.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеРабота с ячейками - всегда долго. А работа с примечаниями - это работа с ячейками, и даже хуже...
Поэтому быстро не будет. Может быть можно к массивам ещё и словарь привлечь (не вникал, может и не можно...) - но всё равно это ускорит на пару секунд, что на минуте работы с примечаниями не скажется.

P.S. Посмотрел - можно словарь привлечь: запоминаем в словаре адреса ячеек для ключей артикул-лист, затем циклом по данным-массивам листов если находим необходимость писать комментарий - пишем по адресу из словаря.
Предварительно можно молча стереть скопом все примечания - так быстрее. Если конечно это нужно по задаче.

Автор - Hugo
Дата добавления - 30.12.2014 в 23:51
Leanna Дата: Среда, 31.12.2014, 01:49 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Про скопом стирание примечаний согласна.

Технически не очень поняла про словари
>>"запоминаем в словаре адреса ячеек для ключей артикул-лист"
цикл по массиву(?) где записываем адреса(которых в массиве нет, а ячейки лишний раз трогать не хотим) в item, артикул-лист key(?). Получается адреса будут вида 5 строка 6 колонка, т.е. потом это надо сплитовать, так же как и артикул-лист
>>затем циклом по данным-массивам листов если находим необходимость писать комментарий - пишем по адресу из словаря
Не поняла. В целом для меня темный лес, зачем нужен адрес из словаря? есть же циклы i по строкам и j по столбцам главной табл.- вот и есть адрес, без этих циклов же все равно не обойтись (?) - перебор по артикулам-столбцам=магазинам.

Не понимаю как именно можно сделать то о чем вы говорите, перебор столбцов и строк мне понятен, а как словари сюда прикручиваются и оптимизируют - нет. Я вижу только лишние циклы - по загону данных в словарь и лишние сплиты что бы считать данные со словаря, что если не замедляет, то запутывает. Если поясните буду благодарна. "За" оптимизацию)) Честно хочу понять как можно ускориться за счет словарей.


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеПро скопом стирание примечаний согласна.

Технически не очень поняла про словари
>>"запоминаем в словаре адреса ячеек для ключей артикул-лист"
цикл по массиву(?) где записываем адреса(которых в массиве нет, а ячейки лишний раз трогать не хотим) в item, артикул-лист key(?). Получается адреса будут вида 5 строка 6 колонка, т.е. потом это надо сплитовать, так же как и артикул-лист
>>затем циклом по данным-массивам листов если находим необходимость писать комментарий - пишем по адресу из словаря
Не поняла. В целом для меня темный лес, зачем нужен адрес из словаря? есть же циклы i по строкам и j по столбцам главной табл.- вот и есть адрес, без этих циклов же все равно не обойтись (?) - перебор по артикулам-столбцам=магазинам.

Не понимаю как именно можно сделать то о чем вы говорите, перебор столбцов и строк мне понятен, а как словари сюда прикручиваются и оптимизируют - нет. Я вижу только лишние циклы - по загону данных в словарь и лишние сплиты что бы считать данные со словаря, что если не замедляет, то запутывает. Если поясните буду благодарна. "За" оптимизацию)) Честно хочу понять как можно ускориться за счет словарей.

Автор - Leanna
Дата добавления - 31.12.2014 в 01:49
Hugo Дата: Среда, 31.12.2014, 16:58 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Сделал пример на словаре - даже получилось чуть медленнее :( , хотя в общем одинаково, если отключить отключения в коде :)
Но кажется что код как раз понятнее.

[vba]
Код
Option Explicit

Sub tt()
      Dim tm!: tm = Timer
      Dim adr, magazin, a(), h(), i&, ii&, lc&, el, s$
      adr = Array("M", "U", "AC", "AK")
      magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")

'    Application.ScreenUpdating = False
'    Application.EnableEvents = False

      With Sheets("АНАЛИТ")
          lc = .Cells(.Rows.Count, 3).End(xlUp).Row
          a = .Range("B10:B" & lc).Value
          .Range("M10:AK" & lc).ClearComments
      End With

      With CreateObject("scripting.dictionary")
          'заполняем словарь адресами ячеек артикул/магазин
          For i = 1 To UBound(a)
              For ii = 0 To UBound(adr)
                  .Item(a(i, 1) & "|" & magazin(ii)) = adr(ii) & i + 9
              Next
          Next

          For Each el In magazin 'цикл по листам
              With Sheets(el)
                  lc = .Cells(.Rows.Count, 1).End(xlUp).Row
                  a = .Range("A2:A" & lc).Value
                  h = .Range("H2:H" & lc).Value
              End With
              For i = 1 To UBound(a) 'цикл по данным листа
                  If Len(h(i, 1)) Then 'если есть что писать в примечание
                      s = .Item(a(i, 1) & "|" & el) 'извлекаем адрес
                      With Sheets("АНАЛИТ").Range(s) 'пишем примечание
                          .NoteText Text:=h(i, 1)
                          .Comment.Shape.TextFrame.AutoSize = True
                      End With
                  End If
              Next
          Next

      End With

'    Application.ScreenUpdating = True
'    Application.EnableEvents = True

      MsgBox Timer - tm
End Sub
[/vba]
Вообще переменная s не нужна - без неё шевелится чуть быстрее. Но код чуть непонятнее.
К сообщению приложен файл: 4002033-1-H.rar (23.8 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСделал пример на словаре - даже получилось чуть медленнее :( , хотя в общем одинаково, если отключить отключения в коде :)
Но кажется что код как раз понятнее.

[vba]
Код
Option Explicit

Sub tt()
      Dim tm!: tm = Timer
      Dim adr, magazin, a(), h(), i&, ii&, lc&, el, s$
      adr = Array("M", "U", "AC", "AK")
      magazin = Array("Магазин №1", "Магазин №2", "Магазин №4", "Магазин №6")

'    Application.ScreenUpdating = False
'    Application.EnableEvents = False

      With Sheets("АНАЛИТ")
          lc = .Cells(.Rows.Count, 3).End(xlUp).Row
          a = .Range("B10:B" & lc).Value
          .Range("M10:AK" & lc).ClearComments
      End With

      With CreateObject("scripting.dictionary")
          'заполняем словарь адресами ячеек артикул/магазин
          For i = 1 To UBound(a)
              For ii = 0 To UBound(adr)
                  .Item(a(i, 1) & "|" & magazin(ii)) = adr(ii) & i + 9
              Next
          Next

          For Each el In magazin 'цикл по листам
              With Sheets(el)
                  lc = .Cells(.Rows.Count, 1).End(xlUp).Row
                  a = .Range("A2:A" & lc).Value
                  h = .Range("H2:H" & lc).Value
              End With
              For i = 1 To UBound(a) 'цикл по данным листа
                  If Len(h(i, 1)) Then 'если есть что писать в примечание
                      s = .Item(a(i, 1) & "|" & el) 'извлекаем адрес
                      With Sheets("АНАЛИТ").Range(s) 'пишем примечание
                          .NoteText Text:=h(i, 1)
                          .Comment.Shape.TextFrame.AutoSize = True
                      End With
                  End If
              Next
          Next

      End With

'    Application.ScreenUpdating = True
'    Application.EnableEvents = True

      MsgBox Timer - tm
End Sub
[/vba]
Вообще переменная s не нужна - без неё шевелится чуть быстрее. Но код чуть непонятнее.

Автор - Hugo
Дата добавления - 31.12.2014 в 16:58
Leanna Дата: Среда, 31.12.2014, 18:12 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Hugo, спасибо за мастер класс "как ещё можно"! Особенно если бы колонки куда вставляются примечания были бы с неравным шагом, то именно так как у вас было бы лучше делать.


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеHugo, спасибо за мастер класс "как ещё можно"! Особенно если бы колонки куда вставляются примечания были бы с неравным шагом, то именно так как у вас было бы лучше делать.

Автор - Leanna
Дата добавления - 31.12.2014 в 18:12
Hugo Дата: Среда, 31.12.2014, 18:29 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Если эти столбцы вообще изначально непонятно где - то их можно сперва в коде определить (поиском или циклом, не важно), занести буквы в коллекцию или словарь, перекинуть в массив, ну или сразу в массив.
Вообще тут по задаче видно что листы и эти столбцы всегда изначально известно где и какие (тем более что их наименования неодинаковы) - т.е. когда добавится лист магазина - то соответственно появится и его диапазон на сводном листе. Поэтому я это в коде прописал явно, как впрочем это сделала и Leanna.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЕсли эти столбцы вообще изначально непонятно где - то их можно сперва в коде определить (поиском или циклом, не важно), занести буквы в коллекцию или словарь, перекинуть в массив, ну или сразу в массив.
Вообще тут по задаче видно что листы и эти столбцы всегда изначально известно где и какие (тем более что их наименования неодинаковы) - т.е. когда добавится лист магазина - то соответственно появится и его диапазон на сводном листе. Поэтому я это в коде прописал явно, как впрочем это сделала и Leanna.

Автор - Hugo
Дата добавления - 31.12.2014 в 18:29
Inna13Kr Дата: Четверг, 15.01.2015, 13:10 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо. 2-ой вариант макроса работают безупречно, хоть и долго..


Сообщение отредактировал Inna13Kr - Четверг, 15.01.2015, 18:06
 
Ответить
СообщениеСпасибо. 2-ой вариант макроса работают безупречно, хоть и долго..

Автор - Inna13Kr
Дата добавления - 15.01.2015 в 13:10
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление примечаний c использованием макроса (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!