Привет. Написан макрос, выполнение которого привязано к определенному столбцу. В таблице из за удаления/добавления столбцов соответственно расположения смещаются и не соответствуют коду. Я пока не освоил именованные диапазоны и использую перед каждым макросом MsgBox сообщение о букве столбца. Это очень неудобно и сильно тормозит процесс (очень много макросов и столбцов).
:excl: Можно ли изменить MsgBox, что бы сигнализировал только при не совпадении в коде буквы столбца и таблицей Excel То есть, если все совпадает, макрос отрабатывает, если нет, то выходит сообщение MsgBox с вопросом о остановке макроса или автоматом макрос прекратил работу и вышло MsgBox сообщение.
Сейчас MsgBox просто спрашивает о соответствии и я могу остановить его работу. Пример приложил
Привет. Написан макрос, выполнение которого привязано к определенному столбцу. В таблице из за удаления/добавления столбцов соответственно расположения смещаются и не соответствуют коду. Я пока не освоил именованные диапазоны и использую перед каждым макросом MsgBox сообщение о букве столбца. Это очень неудобно и сильно тормозит процесс (очень много макросов и столбцов).
:excl: Можно ли изменить MsgBox, что бы сигнализировал только при не совпадении в коде буквы столбца и таблицей Excel То есть, если все совпадает, макрос отрабатывает, если нет, то выходит сообщение MsgBox с вопросом о остановке макроса или автоматом макрос прекратил работу и вышло MsgBox сообщение.
Сейчас MsgBox просто спрашивает о соответствии и я могу остановить его работу. Пример приложилRama
Sub УФ_стереть_создать() ' ////////////////////////////////// ' Вставка Y в параметр НДС включен в цену? On Error Resume Next With Rows(3).Find("НДС включен в цену ?", , xlValues, xlWhole).Offset(2) Range(.Cells, Cells(Rows.Count, .Column)).SpecialCells(xlCellTypeBlanks) = "Y" End With ' ////////////////////////////////// MsgBox "ВСЕ!" End Sub
[/vba]
как-то так [vba]
Код
Sub УФ_стереть_создать() ' ////////////////////////////////// ' Вставка Y в параметр НДС включен в цену? On Error Resume Next With Rows(3).Find("НДС включен в цену ?", , xlValues, xlWhole).Offset(2) Range(.Cells, Cells(Rows.Count, .Column)).SpecialCells(xlCellTypeBlanks) = "Y" End With ' ////////////////////////////////// MsgBox "ВСЕ!" End Sub
With Rows(3).Find("НДС включен в цену ?", , xlValues, xlWhole).Offset(2) Range(.Cells, Cells(Rows.Count, .Column)).SpecialCells(xlCellTypeBlanks) = "Y" End With
With Rows(3).Find("НДС включен в цену ?", , xlValues, xlWhole).Offset(2) Range(.Cells, Cells(Rows.Count, .Column)).SpecialCells(xlCellTypeBlanks) = "Y" End With
krosav4ig, Ваше решение меня взволновало, я ноль в макросах (только макрорекордер). Вы помогли с вставкой, привязав к названию столбца. Спасибо.
Но у меня есть несколько очень важных, просто важнейших, макросов это - копирование одних столбцов с формулами и вставка их в другие как значение. Проблема та же, привязка к букве столбца в коде, а по факту все меняется в самой таблице Excel и опять я это отслеживаю через MsgBox
Задача: Можно ли увязать копирование и вставка как значение по идентичному названию столбца ? Пример приложил
krosav4ig, Ваше решение меня взволновало, я ноль в макросах (только макрорекордер). Вы помогли с вставкой, привязав к названию столбца. Спасибо.
Но у меня есть несколько очень важных, просто важнейших, макросов это - копирование одних столбцов с формулами и вставка их в другие как значение. Проблема та же, привязка к букве столбца в коде, а по факту все меняется в самой таблице Excel и опять я это отслеживаю через MsgBox
Задача: Можно ли увязать копирование и вставка как значение по идентичному названию столбца ? Пример приложилRama
Pelena, позвольте оспорить (если такое возможно). тема: Сообщение при различии диапазона кода и таблицы Excel в первом посте речь об этом и шла (там про вставку), мой последний пост до этого все то же самое (но про копирование) Суть всего этого одна: замена MsgBox на привязку к названию столбца.
P/S/ В новой задаче просто вариация от первой задачи, на которую дан ответ. А дальше развитие этой темы
Pelena, позвольте оспорить (если такое возможно). тема: Сообщение при различии диапазона кода и таблицы Excel в первом посте речь об этом и шла (там про вставку), мой последний пост до этого все то же самое (но про копирование) Суть всего этого одна: замена MsgBox на привязку к названию столбца.
P/S/ В новой задаче просто вариация от первой задачи, на которую дан ответ. А дальше развитие этой темыRama
Сообщение отредактировал Rama - Среда, 08.08.2018, 22:59
Dim r As Range, arr() As Variant With Rows(3) Set r = .Find("Валюта для Розничной цены", , xlValues, xlWhole) arr = .FindNext(r).Offset(2).Resize(LastRow(.Cells), 2).Value r.Offset(2).Resize(UBound(arr), 2).Value = arr End With
Можно, если определиться, по какому критерию искать эту строку
[vba]
Код
Dim r As Range, arr() As Variant With Rows(3) Set r = .Find("Валюта для Розничной цены", , xlValues, xlWhole) arr = .FindNext(r).Offset(2).Resize(LastRow(.Cells), 2).Value r.Offset(2).Resize(UBound(arr), 2).Value = arr End With