/ / Vba виділити клітинку з подвійним клацанням, з другим подвійним клацанням видалити форматування з 2 діапазонів - excel, vba, excel-vba

Vba виділить подвійне клацання клітинку з другим подвійним клацанням, видалення форматування з 2 діапазонів - Excel, VBA, Excel-VBA

У мене два діапазони A1: A4 і A5: A10. Я хочу бути в змозі виділити клітинку, коли він двічі клацнув з першого діапазону сказати А1, коли я потім двічі клацніть по клітці в тому ж діапазоні сказати A2 це буде потім виділити A1 і виділити A2. Я хочу зробити те ж саме для другого діапазону, але незалежно один від одного, тому я закінчу з 2 виділеними клітинками, по одному з кожного діапазону. Код, який я зараз використовую, робить це лише для другого діапазону на даний момент:

Public PreviousCell As Range
Public PreviousCell2 As Range

Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)

If Not PreviousCell Is Nothing Then PreviousCell.Interior.ColorIndex = xlNone



With target.Interior
If Not .ColorIndex = xlNone Then
.ColorIndex = xlNone
ElseIf Not Intersect(target, Range("A1:A4")) Is Nothing Then
.ColorIndex = 15
ElseIf Not .ColorIndex = 15 Then
.ColorIndex = xlNone
End If
End With
Cancel = True

Set PreviousCell = target

If Not PreviousCell2 Is Nothing Then PreviousCell2.Interior.ColorIndex = xlNone

With target.Interior
If Not .ColorIndex = xlNone Then
.ColorIndex = xlNone
ElseIf Not Intersect(target, Range("A5:A10")) Is Nothing Then
.ColorIndex = 15
ElseIf Not .ColorIndex = 15 Then
.ColorIndex = xlNone
End If
End With
Cancel = True

Set PreviousCell2 = target

End Sub

Дякую!

Відповіді:

0 для відповіді № 1

Якщо клітинка двічі натиснута Range("A1:A4") потім очистіть колір з усього діапазону і виділіть діапазон цілі. Зробіть те саме для Range("A5:A10").

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A1:A4")) Is Nothing Then
Range("A1:A4").Interior.ColorIndex = xlNone
Target.Interior.ColorIndex = 15
ElseIf Not Intersect(Target, Range("A5:A10")) Is Nothing Then
Range("A5:A10").Interior.ColorIndex = xlNone
Target.Interior.ColorIndex = 15
End If

End Sub

0 для відповіді № 2

Ahh ok я бачу питання зараз. Проблема полягає в тому, що ви встановлюєте попередні значення BOTH на target, незалежно від вибраного діапазону. Вам потрібно змінити PreviousCell і PreviousCell2 орієнтуватися тільки коли їх відповідний діапазон змінено. Так якщо Target потім знаходиться в межах A1: A4 PreviousCell буде змінено, і якщо Target потім знаходиться в межах A5: A10 PreviousCell2 повинні бути змінені відповідно.