gpt4 book ai didi

excel - 添加基本​​形状左/右箭头作为可单击的上一个/下一个按钮

转载 作者:行者123 更新时间:2023-12-02 13:39:06 25 4
gpt4 key购买 nike

我正在考虑编写一些 VBA 代码,将显示的工作表按选项卡的顺序更改为上一个或下一个工作表。

我找到了this stackoverflow question其中谈到添加箭头,但它更像是引导箭头(图中红色)。

example 1

我想从插入功能区 -> 插图部分 -> 形状下拉列表中添加向左或向右箭头:

example 2

我正在使用的代码片段是:

Dim l As Long
Dim t As Long

l = Range("O3").Left
t = Range("Q3").Top

Item_Estimate_Sheet.Shapes.AddConnector(msoConnectorStraight, t + 89.25, l + 89.25, l, t).Select

With Selection
With .ShapeRange.Line
.EndArrowheadStyle = msoArrowheadOpen
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
.Weight = 1.5
End With
End With

我希望添加的是我手动添加的如下内容:

example 3

B 部分

避免使用 select。我在这里一次又一次地听说 select 是应该避免的,而不是必需的。我尝试删除选择,当我这样做时,它导致了错误。在添加形状行的末尾似乎需要一个 .something 。有一个更好的方法吗?

C 部分:除了在插入时记录宏之外,还有其他方法可以获取插入的形状的尺寸/属性吗? (该死的为什么我不记得录制宏)

更新:

所以我录制了一个宏并编辑了我的代码,如下所示:

Item_Estimate_Sheet.Shapes.AddShape(msoShapeRightArrow, 859.5, 35.25, 25.5, 19.5).Select

With Selection
With .ShapeRange.Line
.Name = "NEXT"
.Top = Range("S3").Top
.Left = Range("S3").Left
.Width = Range("Q3").Width * 2
.Height = Range("Q3").Height * 2
End With
End With

当我按如下方式删除选择时,它抛出了一个错误..有关 Not Acceptable 方法的信息:

With Item_Estimate_Sheet.Shapes.AddShape(msoShapeRightArrow, 859.5, 35.25, 25.5, 19.5)

With .ShapeRange.Line
.Name = "NEXT"
.Top = Range("S3").Top
.Left = Range("S3").Left
.Width = Range("Q3").Width * 2
.Height = Range("Q3").Height * 2
End With
End With

最佳答案

我会把这个提出来,但我很不确定你的 .ShapeRange 对象的 .Line 属性到底是什么目的。因此,我的做法是插入一些箭头,为它们分配 .Name.OnAction,同时进一步将它们分组以分配更常见的属性,例如 。填写

显然这是一个草稿,但您也许能够了解(我认为)它是如何完成的。

Sub InsertArrows()

Dim rngL As Range, rngR As Range
Dim shpL As Shape, shpR As Shape

For Each sht In ThisWorkbook.Sheets
Set rngL = sht.Range("B2")
Set rngR = sht.Range("C2")

Set shpL = sht.Shapes.AddShape(msoShapeLeftArrow, rngL.Left, rngL.Top, rngL.Width, rngL.Height)
With shpL
.Name = "Last"
.OnAction = "LastSheet"
End With

Set shpR = sht.Shapes.AddShape(msoShapeRightArrow, rngR.Left, rngR.Top, rngR.Width, rngR.Height)
With shpR
.Name = "Next"
.OnAction = "NextSheet"
End With

Set shpRng = sht.Shapes.Range(Array("Last", "Next"))
With shpRng
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Line.ForeColor.RGB = RGB(255, 0, 0)
'More common properties.....
End With
Next sht

End Sub

Sub LastSheet()
'Some code to get to the last sheet
End Sub

Sub NextSheet()
'Some code to get to the next sheet
End Sub

enter image description here

关于excel - 添加基本​​形状左/右箭头作为可单击的上一个/下一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57877640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com