Здравствуйте. На форуме ничего не нашел или неправильно задавал текст в поиске. Задача в том, как запретить выполнение любого макроса, если в текущей строке хотя бы в одной из ячеек находятся какие-либо данные (цифры, буквы, пробел и пр.знаки). Ячеек в строке может быть до 60. Если в строке в каких-либо ячейках есть информация, то появляется предупреждение, что строка занята и что делать дальше: отменить действие или продолжить выполнение макроса. Может кто-нибудь уже сталкивался с данной задачей. Спасибо.
Здравствуйте. На форуме ничего не нашел или неправильно задавал текст в поиске. Задача в том, как запретить выполнение любого макроса, если в текущей строке хотя бы в одной из ячеек находятся какие-либо данные (цифры, буквы, пробел и пр.знаки). Ячеек в строке может быть до 60. Если в строке в каких-либо ячейках есть информация, то появляется предупреждение, что строка занята и что делать дальше: отменить действие или продолжить выполнение макроса. Может кто-нибудь уже сталкивался с данной задачей. Спасибо.-SVP-
Текущая (активная) строка может быть только в активной книге на активном листе, следовательно проверяем Selection на однострочность, если ок - СЧЁТЗ выделения, если >0 - MsgBox с выбором Не?
Текущая (активная) строка может быть только в активной книге на активном листе, следовательно проверяем Selection на однострочность, если ок - СЧЁТЗ выделения, если >0 - MsgBox с выбором Не?Serge_007
Sub www() Dim vopros As String If Application.CountA([a1:h1].Value) > 0 Then vopros = MsgBox("ВЫПОЛНИТЬ?", vbOKCancel) If vopros = 1 Then MsgBox 1 'else: End If End Sub
[/vba]
[vba]
Код
Sub www() Dim vopros As String If Application.CountA([a1:h1].Value) > 0 Then vopros = MsgBox("ВЫПОЛНИТЬ?", vbOKCancel) If vopros = 1 Then MsgBox 1 'else: End If End Sub
Добрый день. АВС, я попробовал ваш макрос. Почему-то макрос задает вопрос и при запуске его в пустой строке или я чего-то не понимаю. Может быть это связано с тем, чо таблица уже отформатирована? К сожалению, я не силен в написании макросов. И еще вопрос для чего нужна строка "If vopros = 1 Then MsgBox 1".
Добрый день. АВС, я попробовал ваш макрос. Почему-то макрос задает вопрос и при запуске его в пустой строке или я чего-то не понимаю. Может быть это связано с тем, чо таблица уже отформатирована? К сожалению, я не силен в написании макросов. И еще вопрос для чего нужна строка "If vopros = 1 Then MsgBox 1".-SVP-
Sub www() Dim vopros As String With ActiveSheet.Rows(ActiveCell.Row) iCount = Application.CountBlank(.Cells) If iCount = .Cells.Count Then MsgBox "Строка № " & .Row & " пустая и макрос что-то должен изменить без предупреждения" Else vopros = MsgBox("ВЫПОЛНИТЬ?", vbOKCancel) If vopros = 1 Then MsgBox "Несмотря на то, что строка непустая, макрос все равно что-то делает" Else MsgBox "Макрос не обрабатывает текущую строку" End If End If End With End Sub
[/vba]
[vba]
Код
Sub www() Dim vopros As String With ActiveSheet.Rows(ActiveCell.Row) iCount = Application.CountBlank(.Cells) If iCount = .Cells.Count Then MsgBox "Строка № " & .Row & " пустая и макрос что-то должен изменить без предупреждения" Else vopros = MsgBox("ВЫПОЛНИТЬ?", vbOKCancel) If vopros = 1 Then MsgBox "Несмотря на то, что строка непустая, макрос все равно что-то делает" Else MsgBox "Макрос не обрабатывает текущую строку" End If End If End With End Sub
и в барабан стучать не надо и продолжаете предлагать всякую .... бяку? -SVP-, может все же определитесь? Впрочем, я не настаиваю. Кто хочет - спрашивает, кто хочет - ответы пишет. А согласие - по взаимности.
Беседа слепого с глухим. Когда увижу "www", я тебе в барабан постучу! Ну почему вы так тупо игнорируете
и в барабан стучать не надо и продолжаете предлагать всякую .... бяку? -SVP-, может все же определитесь? Впрочем, я не настаиваю. Кто хочет - спрашивает, кто хочет - ответы пишет. А согласие - по взаимности. RAN
SergeyKorotun, добрый день. Возвращаюсь к вашему макросу. Проявилась некорректность работы макроса. При отказе продолжения выполнения макроса (если строка не пустая), и после сообщения "Макрос не обрабатывает текущую строку", макрос все равно переписывает данные текущей строки.
SergeyKorotun, добрый день. Возвращаюсь к вашему макросу. Проявилась некорректность работы макроса. При отказе продолжения выполнения макроса (если строка не пустая), и после сообщения "Макрос не обрабатывает текущую строку", макрос все равно переписывает данные текущей строки.
Мой макрос нигде ничего не записывает в ячейки. Я написал вам только заготовку, а что и куда копировать в условии задачи не описано. Ниженаведенные строки вам не нужны, поставьте вначале апостроф или удалите их и если что-то после них добавили, также удалите [vba]
Код
Else MsgBox "Макрос не обрабатывает текущую строку"
[/vba]
Мой макрос нигде ничего не записывает в ячейки. Я написал вам только заготовку, а что и куда копировать в условии задачи не описано. Ниженаведенные строки вам не нужны, поставьте вначале апостроф или удалите их и если что-то после них добавили, также удалите [vba]
Код
Else MsgBox "Макрос не обрабатывает текущую строку"