Кто-нибудь знает, как написать макрос Excel, который соединяет две выбранные ячейки вертикальной линией?
Итак, если бы ячейки F6 и F11 соединялись, можно было бы ввести
=LINEJOIN(F6,F11)

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

Это для проекта генеалогического древа.
Любая помощь с благодарностью! Большое спасибо Майк
Я начинающий vba-писатель и никуда с этим не денусь!
Вы можете начать с записи макроса, чтобы получить представление о необходимом коде.
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Большое спасибо за комментарии, я пытался записать макрос, но получил следующее: Sub linejoin() ' ' linejoin Macro ' ' Range("M16"). Выберите End Sub
Кроме того, соединяемые ячейки могут быть разделены любым числом строк, поэтому длина строки будет переменной.


Каждая ячейка имеет индивидуальное свойство Top, Left, Height и Width.
С их помощью вы можете определить начальную и конечную координаты линии.
Создайте объект Shape командой Shapes.AddLine с вычисленными координатами.
И это все. Вы получаете строку.
Спасибо - я не знаю, как это сделать - где мне ввести команду "Shapes.Addline"?
Попробуйте это
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 может создать форму. Милый.
Я только что протестировал этот код, он действительно создает shape -- фиолетовую линию, невероятно. Удивительный. @ Тим, сэр, спасибо.
@BigBen - я тоже, но я полагаю, что риск того, что UDF сделает это, невелик, поскольку вряд ли это испортит дерево вычислений?
Если это ответило на ваш вопрос, отметьте его как «Принято», чтобы помочь всем, кто придет позже с похожей проблемой.
Большое спасибо Тим, это работает отлично!
Excel может быть не лучшим инструментом для работы. Рассматривали ли вы вместо этого использование Visio или аналогичного инструмента?