【问题标题】:Changing multiple cells values using a command Button使用命令按钮更改多个单元格值
【发布时间】:2015-07-07 15:13:48
【问题描述】:

我试图弄清楚如何将 3 个不同工作表上的 3 个单元格更改为与命令按钮标题相同的值。如果只有一个命令,我已经设法让它工作,但似乎无法让它在多个命令上工作。

Private Sub CmdSME100_Click()

    Worksheets("Calculator").Range("I1") = Me.CmdSME100.Caption
    Worksheets("Tariff Matrix").Range("A1") = Me.CmdSME100.Caption
    Worksheets("Bolt-On Matrix").Range("A1") = Me.CmdSME100.Caption

End Sub

就目前而言,这是我要开始工作的代码。而且我似乎无法弄清楚为什么它不能在所有不同的工作表上工作。

我需要它作为我要求代码更改然后触发自动过滤器的单元格。

任何建议将不胜感激。

谢谢

【问题讨论】:

    标签: excel vba button command


    【解决方案1】:

    也许您可以尝试“激活”工作表。考虑到“计算器”是 Sheet1,“关税矩阵”是 Sheet2,“Bolt-On Matrix”是 Sheet 3;

    Private Sub CmdSME100_Click()
    Sheet1.Activate
    Sheet1.Range("A1") = Me.CmdSME100.Caption
    Sheet2.Activate
    Sheet2.Range("A1") = Me.CmdSME100.Caption
    Sheet3.Activate
    Sheet3.Range("A1") = Me.CmdSME100.Caption
    End Sub
    

    【讨论】:

      【解决方案2】:

      设置工作表变量以访问它们

      Private Sub CmdSME100_Click()
      Dim ws As Excel.Worksheet
      
          Set ws = Application.Worksheets(1)
          ws.Range("I1") = Me.CmdSME100.Caption
          Set ws = Application.Worksheets(2)
          ws.Range("A1") = Me.CmdSME100.Caption
          Set ws = Application.Worksheets(3)
          ws.Range("A1") = Me.CmdSME100.Caption
      End Sub
      

      如果您的工作表不在同一索引中,您可以按名称搜索它们。

      代码看起来像这样。

      'Find the worksheet named *BBCOV*
      iFoundWorksheet = 0
      For iIndex = 1 To Application.ActiveWorkbook.Worksheets.Count
          Set ws = Application.Worksheets(iIndex)
          If UCase(ws.Name) = "BBCOV-PURGED" Then
              iFoundWorksheet = iIndex
              Exit For
          End If
      Next iIndex
      If iFoundWorksheet = 0 Then
          MsgBox "No worksheet was found with the name BBCOV-PURGED (this is not case sensetive). Aborting."
          GoTo Abort
      End If
      Set ws = Application.Worksheets(iFoundWorksheet)
      ws.Activate
      

      【讨论】:

      • 我忘记将您的 Worksheets("Calculator") 更改为 ws。已进行更改。
      【解决方案3】:

      我认为你不能像那样抓住标题。

      试试这个:

      ActiveSheet.Buttons(Application.Caller).Caption

      所以...

      Private Sub CmdSME100_Click()
        Worksheets("Calculator").Range("I1") = ActiveSheet.Buttons(Application.Caller).Caption
        Worksheets("Tariff Matrix").Range("A1") = ActiveSheet.Buttons(Application.Caller).Caption
        Worksheets("Bolt-On Matrix").Range("A1") = ActiveSheet.Buttons(Application.Caller).Caption
      End Sub
      

      【讨论】:

      • 您还有这个问题吗?
      • 是的,但我认为这可能与我的自动过滤器有关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多