У меня есть некоторый написанный код, который мне дал другой пользователь, Twisty (которому, как мне кажется, я не могу ответить на использованной странице), что удивительно и то, что мне нужно. Тем не менее, мне нужно сделать немного больше. Кто-нибудь может мне помочь?

** Ниже приведен базовый код, который копирует содержимое двух полей в другие поля двойным щелчком мыши на каждой из двух выбранных ячеек. И что мне также нужно, чтобы в командной строке затем выделили ячейку в той же строке, поэтому, если строка 223, выделите ячейку E223, а затем снимите выделение и преобразуйте ее в светло-серый цвет, чтобы я не нужно перейти к ячейке вручную и отменить выделение и изменить цвет с оранжевого на серый. Ячейка выделена жирным оранжевым цветом, и я хочу автоматически изменить ее на серый, не выделенный жирным шрифтом, когда я дважды щелкаю текущую активную ячейку двойного щелчка. Я надеюсь, что в этом есть смысл.

Я просто хочу дважды щелкнуть ячейку, в которой выполняется команда, и автоматически заполнить два поля выбранным содержимым, а другая ячейка затем превратит свое содержимое в не выделенный жирным шрифтом текст серого цвета. Он будет выполнять то же самое, что и две выбранные ячейки двойного щелчка, так что это один бит кода, запускаемый той ячейкой, по которой щелкают исходный код.

Приведенный ниже код работает хорошо, поэтому не нужно его менять, просто нужно добавить дополнительный бит кода, чтобы выполнить дополнительную работу. Это идет в коде «Рабочий лист 1».


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error GoTo Quit
'Copy values between columns on same row that user double-clicks

'Quit if Target range includes more than one cell
If Target.Count > 1 Then Exit Sub

With ActiveSheet

'Here, specify the worksheet column the user can double-click to activate this
'routine.  For the "B" column, in the Range method specify cell "B1" (all cells
'in column will be used, not just that on row 1).
If Target.Column = .Range("S1").Column Then
    .Cells(Target.Row, .Range("O1").Column) = .Cells(Target.Row, .Range("K1").Column)
    .Cells(Target.Row, .Range("R1").Column) = .Cells(Target.Row, .Range("N1").Column)

    Cancel = True   'Cancel the double-click
End If

'Here you can specify a second "button column" with its own set of copy actions.
If Target.Column = .Range("T1").Column Then
    .Cells(Target.Row, .Range("P1").Column) = .Cells(Target.Row, .Range("H1").Column)
    .Cells(Target.Row, .Range("Q1").Column) = .Cells(Target.Row, .Range("M1").Column)

    Cancel = True   'Cancel the double-click
End If

End With
'Cancel the double-click
Cancel = True

Quit:
End Sub

1 ответ1

0

Ниже строки, которая говорит:

.Cells(Target.Row, .Range("R1").Column) = .Cells(Target.Row, .Range("N1").Column)

Вставьте эти 3 строки:

ThisRow = Target.Row
Cells(ThisRow, 5).Interior.ColorIndex = 15
Cells(ThisRow, 5).Font.Bold = False

Вставьте их также под чертой:

.Cells(Target.Row, .Range("Q1").Column) = .Cells(Target.Row, .Range("M1").Column)

"5" ссылается на 5-й столбец, это означает в столбце Excel "E".

15 - это ColorIndex для серого. Если вам не нравится, измените его в соответствии с этой ссылкой:

http://dmcritchie.mvps.org/excel/colors.htm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .