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

Кто-нибудь знает, как написать макрос Excel, который соединяет две выбранные ячейки вертикальной линией?

Итак, если бы ячейки F6 и F11 соединялись, можно было бы ввести

=LINEJOIN(F6,F11)

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

и проведите центрированную вертикальную линию, идущую от середины нижнего края F6 до середины верхнего края F11

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

Это для проекта генеалогического древа.

Любая помощь с благодарностью! Большое спасибо Майк

Я начинающий vba-писатель и никуда с этим не денусь!

Excel может быть не лучшим инструментом для работы. Рассматривали ли вы вместо этого использование Visio или аналогичного инструмента?

cybernetic.nomad 02.08.2023 16:57

Вы можете начать с записи макроса, чтобы получить представление о необходимом коде.

SJR 02.08.2023 16:58

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 02.08.2023 18:05

Большое спасибо за комментарии, я пытался записать макрос, но получил следующее: Sub linejoin() ' ' linejoin Macro ' ' Range("M16"). Выберите End Sub

Mike62 02.08.2023 18:12

Кроме того, соединяемые ячейки могут быть разделены любым числом строк, поэтому длина строки будет переменной.

Mike62 02.08.2023 18:13
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
5
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Каждая ячейка имеет индивидуальное свойство Top, Left, Height и Width.

С их помощью вы можете определить начальную и конечную координаты линии.

Создайте объект Shape командой Shapes.AddLine с вычисленными координатами.

И это все. Вы получаете строку.

Спасибо - я не знаю, как это сделать - где мне ввести команду "Shapes.Addline"?

Mike62 02.08.2023 18:22
Ответ принят как подходящий

Попробуйте это

Function LineJoin(rngStart As Range, rngEnd As Range)
    Dim shp As Shape, nm As String, ws As Worksheet
    Dim st, sl, et, el
    
    Set ws = Application.ThisCell.Worksheet ' `ThisCell` = the cell with the formula
    'a [unique] name for the line
    nm = rngStart.Address(False, False) & "_" & rngEnd.Address(False, False)
    
    On Error Resume Next
    ws.Shapes(nm).Delete  'remove any already-added line
    On Error GoTo 0
    
    'calculate start/end left & top
    sl = rngStart.Left + (rngStart.Width / 2)
    st = rngStart.Top + rngStart.Height
    el = rngEnd.Left + (rngEnd.Width / 2)
    et = rngEnd.Top
    
    Set shp = ws.Shapes.AddConnector(msoConnectorStraight, sl, st, el, et)
    shp.Name = nm  'name the line
    LineJoin = nm  'return the name of the added line
End Function

Я очень удивлен, что UDF может создать форму. Милый.

BigBen 02.08.2023 18:20

Я только что протестировал этот код, он действительно создает shape -- фиолетовую линию, невероятно. Удивительный. @ Тим, сэр, спасибо.

Mayukh Bhattacharya 02.08.2023 18:24

@BigBen - я тоже, но я полагаю, что риск того, что UDF сделает это, невелик, поскольку вряд ли это испортит дерево вычислений?

Tim Williams 02.08.2023 19:04

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

Tim Williams 02.08.2023 20:47

Большое спасибо Тим, это работает отлично!

Mike62 03.08.2023 07:24

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