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

Вход

Регистрация

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

 

= Мир MS Excel/Доработка записанного макрорекордером макроса - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: китин, _Boroda_  
Доработка записанного макрорекордером макроса
RAN Дата: Вторник, 03.01.2012, 00:23 | Сообщение № 21
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Файл сочинять лень!
И думать сегодня то же.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеФайл сочинять лень!
И думать сегодня то же.

Автор - RAN
Дата добавления - 03.01.2012 в 00:23
Hugo Дата: Вторник, 03.01.2012, 00:29 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
В этом макросе не указано, в какие ячейки листов вставляются данные. Просто активируется лист и вставляется куда попало sad
Следовательно, для того чтобы вставлялось в столбик, нужно это "куда попало" двигать. Можно двигать до, можно после.
Синтаксис:
[vba]
Code
Selection.Offset(1).Select
[/vba]
Т.е. активировали лист, подвинули активную ячейку, вставили. Или сперва вставили, потом подвинули для следующего раза.
Но правильнее конечно действовать без активаций и селектов - конкретно в коде указываем, в какую ячейку какого листа пишем данные.
А сдвиг можно считать в переменной (если два листа, то можно объявить две переменные и их увеличивать на каждом шаге), или динамически определять последнюю заполненную ячейку.
Ну а если данных много, то берём сразу все исходные данные в одну "переменную", т.е в массив, объявляем ещё два/три таких же пустых массива, перебираем исходный массив и перекладываем из одного в другие, потом выгружаем массивы по местам.
Просто и быстро.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВ этом макросе не указано, в какие ячейки листов вставляются данные. Просто активируется лист и вставляется куда попало sad
Следовательно, для того чтобы вставлялось в столбик, нужно это "куда попало" двигать. Можно двигать до, можно после.
Синтаксис:
[vba]
Code
Selection.Offset(1).Select
[/vba]
Т.е. активировали лист, подвинули активную ячейку, вставили. Или сперва вставили, потом подвинули для следующего раза.
Но правильнее конечно действовать без активаций и селектов - конкретно в коде указываем, в какую ячейку какого листа пишем данные.
А сдвиг можно считать в переменной (если два листа, то можно объявить две переменные и их увеличивать на каждом шаге), или динамически определять последнюю заполненную ячейку.
Ну а если данных много, то берём сразу все исходные данные в одну "переменную", т.е в массив, объявляем ещё два/три таких же пустых массива, перебираем исходный массив и перекладываем из одного в другие, потом выгружаем массивы по местам.
Просто и быстро.

Автор - Hugo
Дата добавления - 03.01.2012 в 00:29
KuklP Дата: Вторник, 03.01.2012, 00:38 | Сообщение № 23
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Quote (Serge_007)
Пример конечно не самый лучший
И то. Тут речь о замене формулы, а не изменении в ней. Изменить в формуле можно критерий, диапазон и т.д. Т.е. изменить аргументы. Мне кажется, тут Божьего дара не нать. В большинстве случаев, даже если не понимаешь - справочку почитал, поэкспериментировал, сделал. Я предпочитаю так поступать. Так лучше запоминается и в следующий раз уже легче.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Вторник, 03.01.2012, 00:40
 
Ответить
Сообщение
Quote (Serge_007)
Пример конечно не самый лучший
И то. Тут речь о замене формулы, а не изменении в ней. Изменить в формуле можно критерий, диапазон и т.д. Т.е. изменить аргументы. Мне кажется, тут Божьего дара не нать. В большинстве случаев, даже если не понимаешь - справочку почитал, поэкспериментировал, сделал. Я предпочитаю так поступать. Так лучше запоминается и в следующий раз уже легче.

Автор - KuklP
Дата добавления - 03.01.2012 в 00:38
Serge_007 Дата: Вторник, 03.01.2012, 00:49 | Сообщение № 24
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (KuklP)
Тут речь о замене формулы, а не изменении в ней
В VBA не встречаются функции, которые имеют ограничения? Справка всегда очевидна? Знания английского не требуется?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (KuklP)
Тут речь о замене формулы, а не изменении в ней
В VBA не встречаются функции, которые имеют ограничения? Справка всегда очевидна? Знания английского не требуется?

Автор - Serge_007
Дата добавления - 03.01.2012 в 00:49
Serge_007 Дата: Вторник, 03.01.2012, 00:51 | Сообщение № 25
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Hugo)
если данных много, то берём сразу все исходные данные в одну "переменную", т.е в массив, объявляем ещё два/три таких же пустых массива, перебираем исходный массив и перекладываем из одного в другие, потом выгружаем массивы по местам.
Просто и быстро.

Для формул это убийственно smile
Логика абсолютна другая...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Hugo)
если данных много, то берём сразу все исходные данные в одну "переменную", т.е в массив, объявляем ещё два/три таких же пустых массива, перебираем исходный массив и перекладываем из одного в другие, потом выгружаем массивы по местам.
Просто и быстро.

Для формул это убийственно smile
Логика абсолютна другая...

Автор - Serge_007
Дата добавления - 03.01.2012 в 00:51
Hugo Дата: Вторник, 03.01.2012, 01:00 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Мне почему-то кажется, что формулы массива где-то так и работают.
Т.е. берут данные из памяти, обрабатывают, выгружают на лист.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМне почему-то кажется, что формулы массива где-то так и работают.
Т.е. берут данные из памяти, обрабатывают, выгружают на лист.

Автор - Hugo
Дата добавления - 03.01.2012 в 01:00
RAN Дата: Вторник, 03.01.2012, 01:04 | Сообщение № 27
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Логика бывает двух видов - либо есть, либо нет.
Если нет - тут ни макросы, ни формулы не помогут...


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЛогика бывает двух видов - либо есть, либо нет.
Если нет - тут ни макросы, ни формулы не помогут...

Автор - RAN
Дата добавления - 03.01.2012 в 01:04
Serge_007 Дата: Вторник, 03.01.2012, 01:07 | Сообщение № 28
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Hugo)
Мне почему-то кажется, что формулы массива где-то так и работают.
Т.е. берут данные из памяти, обрабатывают, выгружают на лист.

Тебе не кажется smile
Именно поэтому решения формулами массива стараемся избегать, если есть возможность, что бы не делать этого:
Quote (Hugo)
берём сразу все исходные данные в один массив, перебираем исходный массив, потом выгружаем массив по местам
.
Это вовсе не
Quote (Hugo)
Просто и быстро.
,а совсем наоборот sad


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Hugo)
Мне почему-то кажется, что формулы массива где-то так и работают.
Т.е. берут данные из памяти, обрабатывают, выгружают на лист.

Тебе не кажется smile
Именно поэтому решения формулами массива стараемся избегать, если есть возможность, что бы не делать этого:
Quote (Hugo)
берём сразу все исходные данные в один массив, перебираем исходный массив, потом выгружаем массив по местам
.
Это вовсе не
Quote (Hugo)
Просто и быстро.
,а совсем наоборот sad

Автор - Serge_007
Дата добавления - 03.01.2012 в 01:07
Hugo Дата: Вторник, 03.01.2012, 01:21 | Сообщение № 29
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Ну а макросом так как раз быстрее, чем ячейки перебирать.
И код простой.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу а макросом так как раз быстрее, чем ячейки перебирать.
И код простой.

Автор - Hugo
Дата добавления - 03.01.2012 в 01:21
Serge_007 Дата: Вторник, 03.01.2012, 01:23 | Сообщение № 30
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Hugo)
Ну а макросом так как раз быстрее, чем ячейки перебирать.
И код простой.

Это я уже понял smile
Спасибо


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Hugo)
Ну а макросом так как раз быстрее, чем ячейки перебирать.
И код простой.

Это я уже понял smile
Спасибо

Автор - Serge_007
Дата добавления - 03.01.2012 в 01:23
light26 Дата: Вторник, 03.01.2012, 12:59 | Сообщение № 31
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Вторая попытка. Записал опять макрорекордером, но добавил if, хотя и не правильно: матом VBA ругается sad

Code
Sub Ïåðåíîñ2()
'
' Ïåðåíîñ2 Ìàêðîñ
'

'
If "B:B" = "Äà" Then
     Range("A1").Select
     Selection.Cut
     Sheets("Äà").Select
     Selection.Insert Shift:=xlDown
     Sheets("Äàííûå").Select
     Selection.Delete Shift:=xlUp
     Range("B1").Select
     Selection.ClearContents
End If
     If "B:B" = "Íåò" Then
     Range("A1").Select
     Selection.Cut
     Sheets("Íåò").Select
     Range("A1").Select
     Selection.Insert Shift:=xlDown
     Sheets("Äàííûå").Select
     End If
End Sub


Я не волшебник. Я только учусь
 
Ответить
СообщениеВторая попытка. Записал опять макрорекордером, но добавил if, хотя и не правильно: матом VBA ругается sad

Code
Sub Ïåðåíîñ2()
'
' Ïåðåíîñ2 Ìàêðîñ
'

'
If "B:B" = "Äà" Then
     Range("A1").Select
     Selection.Cut
     Sheets("Äà").Select
     Selection.Insert Shift:=xlDown
     Sheets("Äàííûå").Select
     Selection.Delete Shift:=xlUp
     Range("B1").Select
     Selection.ClearContents
End If
     If "B:B" = "Íåò" Then
     Range("A1").Select
     Selection.Cut
     Sheets("Íåò").Select
     Range("A1").Select
     Selection.Insert Shift:=xlDown
     Sheets("Äàííûå").Select
     End If
End Sub

Автор - light26
Дата добавления - 03.01.2012 в 12:59
VictorM Дата: Вторник, 03.01.2012, 13:16 | Сообщение № 32
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 161
Репутация: 27 ±
Замечаний: 0% ±

Quote
Не понял. А почему при копировании вместо кирилицы кракозябры вылазят?

При копировании кода переключите раскладку клавиатуры в РУС, кракозябр не будет.
 
Ответить
Сообщение
Quote
Не понял. А почему при копировании вместо кирилицы кракозябры вылазят?

При копировании кода переключите раскладку клавиатуры в РУС, кракозябр не будет.

Автор - VictorM
Дата добавления - 03.01.2012 в 13:16
light26 Дата: Вторник, 03.01.2012, 13:17 | Сообщение № 33
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (VictorM)
При копировании кода переключите раскладку клавиатуры в РУС, кракозябр не будет.

А-а, понятно


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (VictorM)
При копировании кода переключите раскладку клавиатуры в РУС, кракозябр не будет.

А-а, понятно

Автор - light26
Дата добавления - 03.01.2012 в 13:17
nilem Дата: Вторник, 03.01.2012, 13:31 | Сообщение № 34
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Вот так можно с селектами. Пройдите в пошаговом режиме (F8), все будет понятно.
[vba]
Code
Sub Перенос2()
Dim r As Range
For Each r In Range("B1:B23")
          r.Select
          Select Case r.Value
              Case "да"
                  r.Previous.Select
                  Selection.Cut
                  Sheets("Да").Activate
                  Range("A1000").Select
                  Selection.End(xlUp).Offset(1).Select
                  Selection.Insert Shift:=xlDown
                  Sheets("Данные").Activate
                  r.Select
                  Selection.ClearContents
              Case "нет"
                  r.Previous.Select
                  Selection.Cut
                  Sheets("Нет").Activate
                  Range("A1000").Select
                  Selection.End(xlUp).Offset(1).Select
                  Selection.Insert Shift:=xlDown
                  Sheets("Данные").Activate
                  r.Select
                  Selection.ClearContents
          End Select
Next
Range("A1:A23").SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
End Sub
[/vba]
А где кнопочка с тегами для красивых кодов?


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Вторник, 03.01.2012, 14:38
 
Ответить
СообщениеВот так можно с селектами. Пройдите в пошаговом режиме (F8), все будет понятно.
[vba]
Code
Sub Перенос2()
Dim r As Range
For Each r In Range("B1:B23")
          r.Select
          Select Case r.Value
              Case "да"
                  r.Previous.Select
                  Selection.Cut
                  Sheets("Да").Activate
                  Range("A1000").Select
                  Selection.End(xlUp).Offset(1).Select
                  Selection.Insert Shift:=xlDown
                  Sheets("Данные").Activate
                  r.Select
                  Selection.ClearContents
              Case "нет"
                  r.Previous.Select
                  Selection.Cut
                  Sheets("Нет").Activate
                  Range("A1000").Select
                  Selection.End(xlUp).Offset(1).Select
                  Selection.Insert Shift:=xlDown
                  Sheets("Данные").Activate
                  r.Select
                  Selection.ClearContents
          End Select
Next
Range("A1:A23").SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
End Sub
[/vba]
А где кнопочка с тегами для красивых кодов?

Автор - nilem
Дата добавления - 03.01.2012 в 13:31
Hugo Дата: Вторник, 03.01.2012, 14:12 | Сообщение № 35
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Пока в ручном режиме smile
Думал как показать - так думаю легче всего smile


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПока в ручном режиме smile
Думал как показать - так думаю легче всего smile

Автор - Hugo
Дата добавления - 03.01.2012 в 14:12
light26 Дата: Среда, 04.01.2012, 10:59 | Сообщение № 36
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (nilem)
Вот так можно с селектами.

После каждого выбора Да/Нет из списка надо выполнять макрос. А макрос должен выполняться автоматически.
Quote (nilem)
Пройдите в пошаговом режиме (F8), все будет понятно.

Прошел. Синий текст поочередно выделяется желтым маркером. Но понятней от этого мне не стало.
Quote (nilem)
А где кнопочка с тегами для красивых кодов?

Что это за зверь и с чем его едят?
nilem, почему вставка тела макроса в посте сопровождается нумерацией строк?


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (nilem)
Вот так можно с селектами.

После каждого выбора Да/Нет из списка надо выполнять макрос. А макрос должен выполняться автоматически.
Quote (nilem)
Пройдите в пошаговом режиме (F8), все будет понятно.

Прошел. Синий текст поочередно выделяется желтым маркером. Но понятней от этого мне не стало.
Quote (nilem)
А где кнопочка с тегами для красивых кодов?

Что это за зверь и с чем его едят?
nilem, почему вставка тела макроса в посте сопровождается нумерацией строк?

Автор - light26
Дата добавления - 04.01.2012 в 10:59
light26 Дата: Среда, 04.01.2012, 11:05 | Сообщение № 37
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Что за апострофы в начале кода? Они лишние? Их можно удалять?
Code
Sub Перенос2()
'
' Перенос2 макрос
'

'

В чем тут ошибка? или я вообще неправильно применил if/then. Их тут нельзя использовать?
Code
Sub Перенос2()
'
' Перенос2 макрос
'

'
If "B:B" = "Да" Then
Range("A1").Select
Selection.Cut
Sheets("Да").Select
Selection.Insert Shift:=xlDown
Sheets("Данные").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
Selection.ClearContents
End If
If "B:B" = "Нет" Then
Range("A1").Select
Selection.Cut
Sheets("Нет").Select
Range("A1").Select
Selection.Insert Shift:=xlDown
Sheets("Данные").Select
End If
End Sub
[/code]
К сообщению приложен файл: 3237045.xls (45.5 Kb)


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Среда, 04.01.2012, 11:06
 
Ответить
СообщениеЧто за апострофы в начале кода? Они лишние? Их можно удалять?
Code
Sub Перенос2()
'
' Перенос2 макрос
'

'

В чем тут ошибка? или я вообще неправильно применил if/then. Их тут нельзя использовать?
Code
Sub Перенос2()
'
' Перенос2 макрос
'

'
If "B:B" = "Да" Then
Range("A1").Select
Selection.Cut
Sheets("Да").Select
Selection.Insert Shift:=xlDown
Sheets("Данные").Select
Selection.Delete Shift:=xlUp
Range("B1").Select
Selection.ClearContents
End If
If "B:B" = "Нет" Then
Range("A1").Select
Selection.Cut
Sheets("Нет").Select
Range("A1").Select
Selection.Insert Shift:=xlDown
Sheets("Данные").Select
End If
End Sub
[/code]

Автор - light26
Дата добавления - 04.01.2012 в 11:05
Serge_007 Дата: Среда, 04.01.2012, 11:30 | Сообщение № 38
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (light26)
После каждого выбора Да/Нет из списка надо выполнять макрос. А макрос должен выполняться автоматически.

Можно добавить в код [vba]
Code
Application.Volatile
[/vba] и макрос будет выполняться при каждом изменении на листе. Или на события изменения листа повесить.

Quote (light26)
Что за апострофы в начале кода?

Это комментарии. Ими можно закомментировать (запретить выполнение) строки.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (light26)
После каждого выбора Да/Нет из списка надо выполнять макрос. А макрос должен выполняться автоматически.

Можно добавить в код [vba]
Code
Application.Volatile
[/vba] и макрос будет выполняться при каждом изменении на листе. Или на события изменения листа повесить.

Quote (light26)
Что за апострофы в начале кода?

Это комментарии. Ими можно закомментировать (запретить выполнение) строки.

Автор - Serge_007
Дата добавления - 04.01.2012 в 11:30
KuklP Дата: Среда, 04.01.2012, 12:11 | Сообщение № 39
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Quote (light26)
В чем тут ошибка?

"B:B" = "Да" - это сравнение двух строковых значений. Понятно, что они не равны.
Code
Sub Перенос2()
      Dim i&
      With Sheets("Данные")
          For i = .UsedRange.Rows.Count To 1 Step -1
              If .Cells(i, 2).Value = "да" Then
                  .Cells(i, 1).Copy _
                          Sheets("Да").[a65536].End(xlUp).Offset(1)
                  .Cells(i, 2).EntireRow.Delete
              ElseIf .Cells(i, 2) = "нет" Then
                  .Cells(i, 1).Copy _
                          Sheets("Нет").[a65536].End(xlUp).Offset(1)
                  .Cells(i, 2).EntireRow.Delete
              End If
          Next
      End With
End Sub

Но быстрей будет автофильтром отбирать и копировать видимые.
П. С. здесь:
http://www.excelworld.ru/forum/3-511-1
в самом конце первого поста Алексей рассказывает, как радикально побороть кракозябры.
То Serge_007: Серег, мож его в самом деле выделить, как советует Андрей в той теме? Народ не замечает.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Среда, 04.01.2012, 12:25
 
Ответить
Сообщение
Quote (light26)
В чем тут ошибка?

"B:B" = "Да" - это сравнение двух строковых значений. Понятно, что они не равны.
Code
Sub Перенос2()
      Dim i&
      With Sheets("Данные")
          For i = .UsedRange.Rows.Count To 1 Step -1
              If .Cells(i, 2).Value = "да" Then
                  .Cells(i, 1).Copy _
                          Sheets("Да").[a65536].End(xlUp).Offset(1)
                  .Cells(i, 2).EntireRow.Delete
              ElseIf .Cells(i, 2) = "нет" Then
                  .Cells(i, 1).Copy _
                          Sheets("Нет").[a65536].End(xlUp).Offset(1)
                  .Cells(i, 2).EntireRow.Delete
              End If
          Next
      End With
End Sub

Но быстрей будет автофильтром отбирать и копировать видимые.
П. С. здесь:
http://www.excelworld.ru/forum/3-511-1
в самом конце первого поста Алексей рассказывает, как радикально побороть кракозябры.
То Serge_007: Серег, мож его в самом деле выделить, как советует Андрей в той теме? Народ не замечает.

Автор - KuklP
Дата добавления - 04.01.2012 в 12:11
nilem Дата: Среда, 04.01.2012, 12:23 | Сообщение № 40
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Quote (light26)
Прошел. Синий текст поочередно выделяется желтым маркером. Но понятней от этого мне не стало.

Сделайте так. В левой половине экрана (монитора) отрываем книгу с активным листом Данные, в правой половине - редактор VBE (Project Explorer в редакторе можно закрыть, чтобы не мешал). И теперь пошагово проходим код, наблюдая одновременно изменения, происходящие на листе. Очень наглядно.
Предполагалось, что далее будем избавляться от селектов, потом повесим это дело на событие Worksheet_Change и попытаемся использовать массивы.
Нумерация строк макроса в посте - не в курсе. Видимо, промежуточный этап. Используйте пока обычные теги для кода.


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
Quote (light26)
Прошел. Синий текст поочередно выделяется желтым маркером. Но понятней от этого мне не стало.

Сделайте так. В левой половине экрана (монитора) отрываем книгу с активным листом Данные, в правой половине - редактор VBE (Project Explorer в редакторе можно закрыть, чтобы не мешал). И теперь пошагово проходим код, наблюдая одновременно изменения, происходящие на листе. Очень наглядно.
Предполагалось, что далее будем избавляться от селектов, потом повесим это дело на событие Worksheet_Change и попытаемся использовать массивы.
Нумерация строк макроса в посте - не в курсе. Видимо, промежуточный этап. Используйте пока обычные теги для кода.

Автор - nilem
Дата добавления - 04.01.2012 в 12:23
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

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