Алгоритм действий следующий: - Активируем ячейку В7 происходит закрашивание вертикальных и горизонтальных границ ячеек в диапазоне А7:J7 - Активируем ячейку В8 происходит закрашивание вертикальных и горизонтальных границ ячеек в диапазоне А8:J8 Подобные манипуляции происходят в строках с 7 по 300.
Файл таблицы во вложении, макросы там уже имеются, к ним надо добавить, описанное выше.
Этот материал мне уже когда-то попадался. Там про перекрестное выделение, а мне надо оформлять границы ячеек при добавлении записей в строках. Спасибо за информацию.
шрифт в первом сообщении сделайте по-меньше, не знаю как остальные, а лично я - пугаюсь больших букв! вот макрос, который нарисует границы в ячейках А:J определенной строки, надеюсь найдете способ как его выполнять по мере необходимости
Код
Sub BordsAJ(r&)
Dim b&
For b = 7 To 12
range("a" & r & ":j" & r).Borders(b).Weight = xlThin
Next
End Sub
Iгор спасибо за ответ, но я не знаю как его использовать в моём случае. Полагаю, что надо вклинить его в этот код
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Автонумерация
Range("A7:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R1C1:R[-1]C)+1)"
'переключение раскладки
Select Case Target.Column ' в зависимости от номера столбца активной ячеки
Case 2: ' для столбца Полис (серия)
ВключитьАнглийскуюРаскладку
Case 3: 'на столбце Полис (номер) включаем русскую раскладку клавы и далее всё на русском
ВключитьРусскуюРаскладку
Case Else: ' ничего не делаем (оставляем текущую раскладку)
End Select
'перемещение курсора по TAB
Set PrevCell(0) = PrevCell(1)
Set PrevCell(1) = Target
If PrevCell(0) Is Nothing Then Exit Sub
If Target.Column = 1 Then Exit Sub
EnableEvents = False
If Target.Column = TabEnd + 1 Then
If PrevCell(0).Address = Target.Offset(0, -1).Address Then Cells(Target.Row + 1, TabStart).Select
Set PrevCell(1) = ActiveCell
End If
EnableEvents = True
End Sub
суть Вашего макроса во многом загадочна для меня... но все-таки 1. скопируйте макрос из # 9 в модуль листа (к своим макросам) 2. предположу, если после 17-й строки Вашего примера ( EnableEvents = False) написать BordsAJ target.row, Вы получите желаемый результат
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [A7:J300]) Then _
Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Borders.LineStyle = xlContinuous
End Sub
Сергей, у автора темы в модуле листа уже живет Private Sub Worksheet_SelectionChange(ByVal Target As Range) и даже что-то делает... боюсь, что две она не сможет "подружить"((
bsi52, вместо этого BordsAJ target.row или если еще не успели, то просто между строками 17-18 Вашего примера скопируйте это: Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Borders.LineStyle = xlContinuous
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Сделал всё как описано выше, но при открытии файла выскакивает ошибка (см. файл), потом при после ввода данных в столбце В не работает автонумерация (вместо цифр формула) в столбце А. Если пытаюсь удалить строки то опять ошибка RUN-time error 13 Type mismatch. Код в файле такой (прав добавил end If после 2-й строки т.к. ошибка выскакивала.)
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [A7:J300]) Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Borders.LineStyle = xlContinuous
End If
'Автонумерация
Range("A7:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R1C1:R[-1]C)+1)"
'переключение раскладки клаватуры
Select Case Target.Column ' в зависимости от номера столбца активной ячеки
Case 2: ' для столбца Полис (серия)
ВключитьАнглийскуюРаскладку
Case 3: 'на столбце Полис (номер) включаем русскую раскладку клавы и далее всё на русском
ВключитьРусскуюРаскладку
Case Else: ' ничего не делаем (оставляем текущую раскладку)
End Select
'перемещение курсора по TAB
Set PrevCell(0) = PrevCell(1)
Set PrevCell(1) = Target
If PrevCell(0) Is Nothing Then Exit Sub
If Target.Column = 1 Then Exit Sub
EnableEvents = False
Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Borders.LineStyle = xlContinuous
If Target.Column = TabEnd + 1 Then
If PrevCell(0).Address = Target.Offset(0, -1).Address Then Cells(Target.Row + 1, TabStart).Select
Set PrevCell(1) = ActiveCell
End If
EnableEvents = True
End Sub