我想用VBA 编写一个在工作表中指定单元格至指定单元格之间画一条直线程序(最好是自定义函数).如果哪位高手精于此道,请指教,不盛感激! 最好是自定义函数,呵呵,一般来说没有用自定义函数来操作对像的,不过…… 下面的自定义函数可以画一条名称为给定名称线,位置在给定的两个单元格间。 说明:参数1 为线的名称,参数2 与3 为画线的两个单元格,画线成功后函数获得说明,否则值为#value 代码: Function DrawLine(LineName As String, xRan As Range, yRan As Range) On Error Resume Next Dim xSh As Worksheet Dim tStr As String tStr = "已成生名为“" & LineName & "”从“" & xRan.Address(0, 0) & "”到“" & yRan.Address(0, 0) & "” 的直线!" Application.Caller.Parent.Shapes(LineName).Delete Err.Clear If xRan.Column = yRan.Column Then With Application.Caller.Parent.Shapes.AddLine _ (IIf(xRan.Top >= yRan.Top, xRan.Offset(1, 0).Left + xRan.Width / 2, yRan.Offset(1, 0).Left + yRan.Width / 2), _ WorksheetFunction.Min(xRan.Offset(1, 0).Top, yRan.Offset(1, 0).Top), _ IIf(xRan.Top < yRan.Top, xRan.Offset(1, 0).Left + xRan.Width / 2, yRan.Offset(1, 0).Left + yRan.Width / 2), _ WorksheetFunction.Max(xRan.Top, yRan.Top)) .Name = LineName .Line.ForeColor.SchemeColor = 10 End With Else With Application.Caller.Parent.Shapes.AddLine _ (WorksheetFunction.Min(xRan.Offset(0, 1).Left, yRan.Offset(0, 1).Left), _ IIf(xRan.Left < yRan.Left, xRan.Top + xRan.Height / 2, yRan.Top + yRan.Height / 2), _ WorksheetFunction.Max(xRan.Left, yRan.Left), _ IIf(xRan.Left > yRan.Left, xRan.Top + xRan.Height / 2, yRan.Top + yRan.Height / 2)) .Name = LineName .Line.ForeColor.SchemeColor = 10 End With End If If Err.Number Then DrawLine = "#value" Else DrawLine = tStr End If End Function 另外如何用VBA 删除由上述程序生成的直线呢,能不能好人做到底,帮我解决这个困难 Application.Caller.Parent.Shapes(LineName).Delete 这句就是删除,感觉你只是要用不去理解,唉! 还可以用 Activeshee...