/ / Excel 2003: Об’єкт календаря / VBA не працюватиме при натисканні об’єднаних комірок - excel, vba, excel-vba, merge, календар

Excel 2003: календарний об'єкт / VBA не працюватиме при натисканні об'єднаних комірок - excel, vba, excel-vba, merge, calendar

У мене невелика проблема з отриманням календаряОб'єкт, який я вставив у свій аркуш Excel для роботи. У мене є ідентичний об'єкт календаря, з однаковим (крім посилання на стовпець) кодом на іншому аркуші, який чудово працює. Єдина різниця полягає в тому, що в аркуші А (аркуші проблем) клітинки, які я вибираю (де я хочу, щоб об'єкт календаря з'явився), об'єднуються та центруються. Здається, це викликає проблему. Наприклад, коли я встановлюю посилання в коді на весь стовпець L, об’єкт календаря буде працювати для всіх комірок цього стовпця, які не були об’єднані або відцентровані. (Щоб було зрозуміло, комірки об’єднуються лише у стовпці, а не в будь-яких рядках). Хтось уявляє, як я можу це вирішити? Мені потрібно об’єднати ці клітини, я все одно не можу цього обійти. Якщо хтось має якісь пропозиції, я б їх дуже вдячний, це зводило мене з розуму цілий день! Спасибі заздалегідь.

Код (не мій власний) - нижче;

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
"Change this to your range of dates
If Not Intersect(Target, Range("L:L")) Is Nothing Then
Calendar2.Top = Target.Top + Target.Height
Calendar2.Left = Target.Left + Target.Width / 2 - Calendar2.Width / 2
Calendar2.Visible = True
Calendar2.Value = Now
ElseIf Calendar2.Visible Then Calendar2.Visible = False
End If
End Sub
Private Sub Calendar2_Click()
ActiveCell.Value = (Calendar2.Value)
ActiveCell.NumberFormat = "dd mmm yy"
End Sub

Відповіді:

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

Якщо ви вибрали діапазон об'єднаної комірки, тоді Target.Cells.Count завжди більше 1. Є більше однієї комірки, навіть якщо ви не можете вибрати їх окремо.

Якщо вам потрібно дозволити лише виділення окремих комірок або окремих об’єднаних діапазонів, ви можете зробити:

If Target.Address <> Target.Cells(1, 1).MergeArea.Address Then Exit Sub

Це буде працювати з одинарними комірками та з об’єднаними комірками.