Как ограничить ячейки в зависимости от того, куда нажимает пользователь?

У меня есть диаграмма Ганта в листе Excel. Все работает, но я хотел бы улучшить его, введя код VBA, который будет ограничивать диапазон ячеек графика, соответствующий шагу, на который нажимает пользователь. Таким образом, пользователь щелкнет ячейку шага в первом столбце, и тогда вокруг соответствующих цветных ячеек графика появятся границы. Какой код?

Вряд ли вы получите ответ, как поставлен этот вопрос. Вы не предоставили никакого соответствующего контекста в своей таблице. Диаграмма Ганта находится в ячейках листа или на реальном объекте? «Что такое код?» Не существует универсального решения для программирования. Все должно быть записано на компьютере, чтобы он знал, что делать, поэтому без контекста электронной таблицы все, что вам дают, будет концептуальным и потребует от вас корректировки для функционирования. Вы можете переписать этот вопрос, указав подробную информацию о своем листе, о том, что вы пробовали и с какими проблемами столкнулись на этом пути.

Mark S. 29.05.2024 16:57

Знаете ли вы, что макросы можно записывать? Просто начните запись, сделайте то, что хотите, остановите запись и проверьте записанный макрос.

Dominique 29.05.2024 16:59

Да, это в ячейках листа. Я немного модифицировал на свой вкус один из имеющихся в Excel шаблонов. Список шагов находится в столбце C, диаграмма Ганта начинается со строки 18.

Clara Monspiette 29.05.2024 17:08

Вы можете использовать событиеselect_change, чтобы определить, когда пользователь нажимает на заголовок шага в верхней части листа — прочитайте оттуда, чтобы получить даты начала/окончания. Затем перебирайте строки диаграммы Ганта, пока не найдете строку, штриховка которой соответствует датам.

Tim Williams 29.05.2024 18:15
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
4
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim a, z As Date
Dim g As String
Dim f As Integer
Dim y, x As String
Dim p, q As String
Dim h As Integer
Dim cell As Range

Range("B22:CT41").ClearContents
On Error GoTo didi
If Target.Row >= 3 And Target.Row <= 16 Then
If Target.Column > 50 Then
    x = "CA"
    y = "AY"
Else
    x = "AD"
    y = "B"
End If

a = Range(x & Target.Row)
z = Range(x & Target.Row).Offset(0, 1)
h = Range(x & Target.Row).Offset(0, 1) - Range(x & Target.Row)
g = Range(y & Target.Row).Value
f = CInt(Right(g, 2))

For Each cell In Range(Range("B19"), Range("B19").End(xlToRight))
If Format(cell, "dd_mm_yyyy") = Format(a, "dd_mm_yyyy") Then
p = cell.Offset(f + 2, 0).Address
GoTo dede
End If
Next

dede:
For Each cell In Range(Range("B19"), Range("B19").End(xlToRight))
If Format(cell, "dd_mm_yyyy") = Format(z, "dd_mm_yyyy") Then
q = cell.Offset(f + 2, 0).Address
GoTo dada
End If
Next

dada:
Range(p & ":" & q) = f
End If
didi:

End Sub

Кто-нибудь знает, почему возникает ошибка (13: несоответствие типов) в строке: f = CInt(Right(g,2)), когда я меняю порядок шагов?

Clara Monspiette 31.05.2024 16:33

Другие вопросы по теме