Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Выполнение макроса по условию.
 
Здравствуйте всем. Прошу сильно не пинать, но в виду моего незнания VBA имею проблему как разрешить или запретить работать макросу вида:
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim new_value
    Dim r As Range
    Select Case Sh.Name
        Case "Лист1"
            Set r = Application.Intersect(Target, Range("Лист1!$A1:$A100"))
        Case Else
            Set r = Nothing
    End Select
    If r Is Nothing Then Exit Sub
    If Target.Rows.Count * Target.Columns.Count > 1 Then
        Application.Undo
        Exit Sub
    End If
    
    new_value = Target.Value
    Application.EnableEvents = False
    Application.Undo
    If Len(Target.Value) = 0 Then
        Target.Value = new_value
    End If
    Application.EnableEvents = True
End Sub

Макрос честно стырен из интернета и делает то что мне нужно, а именно не позволяет изменять пользователю уже записанные данные в столбце А.

Я хочу прописать условие, чтобы макрос можно было отключать, например по значению в ячейке С1. Но что бы я ни делал с операторами If и Then это приводит только к прекращению работы макроса насовсем. Видимо я что то не так делаю. Прошу помощи у знающих людей.

обращаю внимание что макрос работает только в модуле книги, в модуле листа он не работает.

Изменено: Anatoliy_Pro - 04.02.2019 12:27:09
Ограничение пересчета формулы в книге одним листом.
 
Здравствуйте. В продолжение моей темы здесь, хочу все же решить проблему ограничения работы формулы одним листом. Дело в том, что формула вида =ЕСЛИ(ЯЧЕЙКА("строка")=СТРОКА(L2);"х";"") в связке с макросом, который пересчитывает лист при каждом изменении ячейки  срабатывает также и при изменении ячеек на других листах, что крайне нежелательно. Моя задача - сделать так, чтобы на листе 1 строка с заливкой оставалась на своем месте независимо от изменений на других листах книги.
Вариант отключения автоматического пересчета в книге не рассматриваю. Автопересчет на других листах должен остаться.

Файл прилагается.  
Изменено: Anatoliy_Pro - 24.01.2019 16:27:28
Ограничение работы макроса одним листом
 
Здравствуйте.
Подскажите такое. Есть простейший макрос вида:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.Calculate
  
  End Sub

 

Что нужно дописать, чтобы ограничить его работу только одним листом? В этом виде он срабатывает при изменениях на других листах в книге, что нежелательно.

Изменено: Anatoliy_Pro - 18.01.2019 16:27:01
Макрос, который копирует значения в соседнюю ячейку
 
Здравствуйте. Сам  с VBA не подружился еще, потому прошу помощи у знатоков. Вижу здесь людям помогают в этом.
Хотел для себя записать простенький макрос, который бы копировал результат вычисления формулы из одного столбца в соседний в заданном диапазоне.
Макрос выглядит вот так :
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Range("C4:C21").Copy
    Range("F4:F21").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
Макрос срабатывает но в конце выдает ошибку. Я так понимаю, что я что то (вернее все) делаю не так. Хочу понять что именно я не так делаю и как надо. Буду благодарен, если подскажете с пояснениями к коду, что там к чему и зачем.
Заранее спасибо.

файл для примера прилагается.
Изменено: Anatoliy_Pro - 26.12.2018 12:41:22
Страницы: 1
Наверх