【问题标题】:How to insert a Relative button inside a Cell in Microsoft Excel?如何在 Microsoft Excel 的单元格中插入相对按钮?
【发布时间】:2014-12-08 17:07:58
【问题描述】:

我正在尝试在 Excel 中的单元格内插入一个相对按钮。实际上,我想要的是,一个位于单元格内的按钮,可以在添加/删除行/列时相对移动。此外,我希望它在包含按钮的单元格下方的单元格中加载特定文本。这可以在excel中完成吗?我不知道如何进行! VB新手!!任何帮助表示赞赏:)

编辑::

要定位相对按钮,我使用以下代码:

Sub buttonInACell()
Dim btn As Button
Dim t

   Set t = ActiveSheet.Cells(10, 6)
   Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)

End Sub

现在我需要向按钮添加一个宏以在其下方的单元格中加载一个值。我想我应该使用TopLeftCell 属性。但是我怎么能引用按钮呢?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    要将宏分配给按钮,您可以使用其 OnAction 属性 - 将其设置为您要调用的宏的名称。在该宏中,您可以使用 Application.Caller 获取按钮的名称,并使用该名称来确定要执行的操作。

    Sub buttonInACell()
    Dim btn As Button
    Dim t, x
    
       For x = 1 To 5
            Set t = ActiveSheet.Cells(2, x)
            Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
            btn.OnAction = "ClickedMe"
       Next x
    
    End Sub
    
    Sub ClickedMe()
    
        Dim c, s
        c = Application.Caller
        Set s = ActiveSheet.Shapes(c)
        s.TopLeftCell.Offset(1, 0).Value = "clicked"
    
    
    End Sub
    

    【讨论】:

    • 我也在做同样的事情..有一个疑问,你能告诉我如何使用vba检查单元格中是否存在值吗?是吗,如果 ActiveSheet.Cells(row, col).Value = Null Then
    • 我通常会使用If Len(ActiveSheet.Cells(row, col).Value) = 0。可能If Len(Trim(ActiveSheet.Cells(row, col).Value)) = 0 只是为了确定 ;-)
    • 我试过了,ActiveSheet.Cells(row, col).Value = "" .. 这行得通!!
    • 你能告诉我 t.left, t.Top, t.Width, t.Height 在 ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t .身高)?
    • 在指定位置添加一个指定大小的按钮
    【解决方案2】:

    感谢@Tim 的回答!其实我有点想弄清楚自己,我根据我的要求找到了一个解决方案,那就是:

    将按钮放入单元格::

    Sub buttonInACell()
    Dim btn As Button
    Dim t
    
       Set t = ActiveSheet.Cells(10, 6)
       Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
    
    End Sub
    

    点击按钮 ::

    Public flag As Integer
    
    Sub buttonInACell_Click()
    
    Dim row As Integer, col As Integer
    
        'flag=0 : no show, flag=1 : show
    
        row = ActiveSheet.Shapes(Application.Caller).TopLeftCell.row
        col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
    
        If flag = 0 Then
            ActiveSheet.Shapes(1).TextFrame.Characters.text = "Show data"
                If ActiveSheet.Cells(row + 2, col).Font.Color = vbRed Then
                ActiveSheet.Cells(row + 2, col).Value = ""
                End If
            ActiveSheet.Cells(row + 2, col).Font.Color = vbWhite
            ActiveSheet.Cells(row + 2, col).WrapText = False
            flag = 1
    
        ElseIf flag = 1 Then
            ActiveSheet.Shapes(1).TextFrame.Characters.text = "Hide Data"
                If ActiveSheet.Cells(row + 2, col).Value = "" Then
                    ActiveSheet.Cells(row + 2, col).WrapText = True
                    ActiveSheet.Cells(row + 2, col).Font.Color = vbRed
                    ActiveSheet.Cells(row + 2, col).Value = "Sorry! No Sample Data As of Yet!"
                Else
                    ActiveSheet.Cells(row + 2, col).WrapText = True
                    ActiveSheet.Cells(row + 2, col).Font.Color = vbBlack
                End If
            flag = 0
        End If
    End Sub
    

    这实际上是创建一个切换按钮并允许切换相关单元格中的数据! :)

    【讨论】:

      猜你喜欢
      • 2014-09-04
      • 2017-02-22
      • 2020-02-04
      • 2015-09-18
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      相关资源
      最近更新 更多