Добрый день всем!
Прошу помощи у тех, кто с макросами на ты, а не на вы...
Код:
Что требуется от кода:
1. При выборе любой ячейки в первом столбце проставляется символ "*", кроме 1 и 2 строк.
2. В первом столбце должен быть только один символ "*"
3. При выборе любой ячейки выделяется цветом и размером шрифта строка до колонки S.
4. Запретить пользователю выбор столбца R следующим образом: при выборе этого столбца выделение должно смещаться в столбец D.
Вопросы:
1. В этой части кода происходит очистка от предыдущего выделения
Как ограничить Cells только до диапазона в котором введены данные? чтобы он не менял шрифт и жирность на всем листе, а нашел крайнюю правую нижнюю границу и только в этом диапазоне применил изменения
2. Как в этой части кода
заменить entirerow таким образом, чтобы справа строка была ограничена столбцом S?
3. Как в этой части кода
сменить диапазон R3:R30 на весь столбец? как изменить код, чтобы выделение переносилось в 4 столбец строки на которую нажал пользователь?
Буду рад любым предложениям по улучшению кода и ускорению его работы!
Заранее благодарю!
Прошу помощи у тех, кто с макросами на ты, а не на вы...
Код:
Код |
---|
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 |
2. Как в этой части кода
Код |
---|
Target.EntireRow.Font.Size = 12 Target.EntireRow.Font.Bold = True Target.EntireRow.Interior.ColorIndex = 46 |
3. Как в этой части кода
Код |
---|
If Not Intersect(Target, Range("R3:R30")) Is Nothing Then Range("D10").Select End If |
Буду рад любым предложениям по улучшению кода и ускорению его работы!
Заранее благодарю!