Здравствуйте всем. Прошу сильно не пинать, но в виду моего незнания 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 это приводит только к прекращению работы макроса насовсем. Видимо я что то не так делаю. Прошу помощи у знающих людей.
обращаю внимание что макрос работает только в модуле книги, в модуле листа он не работает.
Здравствуйте. В продолжение моей темы здесь, хочу все же решить проблему ограничения работы формулы одним листом. Дело в том, что формула вида =ЕСЛИ(ЯЧЕЙКА("строка")=СТРОКА(L2);"х";"") в связке с макросом, который пересчитывает лист при каждом изменении ячейки срабатывает также и при изменении ячеек на других листах, что крайне нежелательно. Моя задача - сделать так, чтобы на листе 1 строка с заливкой оставалась на своем месте независимо от изменений на других листах книги. Вариант отключения автоматического пересчета в книге не рассматриваю. Автопересчет на других листах должен остаться.
Здравствуйте. Подскажите такое. Есть простейший макрос вида:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.Calculate
End Sub
Что нужно дописать, чтобы ограничить его работу только одним листом? В этом виде он срабатывает при изменениях на других листах в книге, что нежелательно.
Здравствуйте. Сам с 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
Макрос срабатывает но в конце выдает ошибку. Я так понимаю, что я что то (вернее все) делаю не так. Хочу понять что именно я не так делаю и как надо. Буду благодарен, если подскажете с пояснениями к коду, что там к чему и зачем. Заранее спасибо.