Добрый день всем!
Прошу помощи у тех, кто с макросами на ты, а не на вы...
Код:
Код |
---|
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If ActiveCell.Row = 1 Then Exit Sub
If ActiveCell.Row = 2 Then Exit Sub
Dim r As Long
Dim str As String
If Target.Column = 1 Then
str = Target.Value
Application.EnableEvents = False
r = Cells(Rows.Count, 1).End(xlUp).Row
Range("A3:A" & r).ClearContents
Target.Value = str
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("R3:R30")) Is Nothing Then
Range("D10").Select
End If
If Target.Count > 1 Then Exit Sub
If ActiveCell.Row = 1 Then Exit Sub
If ActiveCell.Row = 2 Then Exit Sub
Dim r As Long
Application.ScreenUpdating = False
Cells.Font.Size = 11
Cells.Font.Bold = False
r = Cells(Rows.Count, 1).End(xlUp).Row
Cells.Range("A3:S" & r).Interior.ColorIndex = 0
Dim LastCol As Integer
LastCol = Cells(3, Columns.Count).End(xlToRight).Column
Target.EntireRow.Font.Size = 12
Target.EntireRow.Font.Bold = True
Target.EntireRow.Interior.ColorIndex = 46
Cells(ActiveCell.Row, 3).Interior.ColorIndex = 6
Cells(ActiveCell.Row, 1) = "*"
Application.ScreenUpdating = True
End Sub
|
Что требуется от кода:
1. При выборе любой ячейки в первом столбце проставляется символ "*", кроме 1 и 2 строк.
2. В первом столбце должен быть только один символ "*"
3. При выборе любой ячейки выделяется цветом и размером шрифта строка до колонки S.
4. Запретить пользователю выбор столбца R следующим образом: при выборе этого столбца выделение должно смещаться в столбец D.
Вопросы:
1. В этой части кода происходит очистка от предыдущего выделения
Код |
---|
Cells.Font.Size = 11
Cells.Font.Bold = False |
Как ограничить Cells только до диапазона в котором введены данные? чтобы он не менял шрифт и жирность на всем листе, а нашел крайнюю правую нижнюю границу и только в этом диапазоне применил изменения
2. Как в этой части кода
Код |
---|
Target.EntireRow.Font.Size = 12
Target.EntireRow.Font.Bold = True
Target.EntireRow.Interior.ColorIndex = 46 |
заменить entirerow таким образом, чтобы справа строка была ограничена столбцом S?
3. Как в этой части кода
Код |
---|
If Not Intersect(Target, Range("R3:R30")) Is Nothing Then
Range("D10").Select
End If |
сменить диапазон R3:R30 на весь столбец? как изменить код, чтобы выделение переносилось в 4 столбец строки на которую нажал пользователь?
Буду рад любым предложениям по улучшению кода и ускорению его работы!
Заранее благодарю!