У мене невелика проблема з отриманням календаряОб'єкт, який я вставив у свій аркуш 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
Це буде працювати з одинарними комірками та з об’єднаними комірками.