【问题标题】:Rank Macro linked to a Button returns error 400链接到按钮的排名宏返回错误 400
【发布时间】:2022-01-25 01:13:34
【问题描述】:

在我的主宏中,我创建了一个按钮:

Dim btn As Button
Set btn = WS1.Buttons.Add(Range("h2").Left, Range("h2").Top, Range("h2").Width, Range("h2").Height)
With btn
  .OnAction = "File_01.Order_Ranking"
  .Caption = "Order Ranking"
  .Name = "Order_Ranking"
End With

然后我创建了链接到按钮的 Order_Ranking 宏:

Sub Order_Ranking()
    Range("B2:E18").Sort Key1:=Range("D2"), _
                     Order1:=xlAscending, _
                     Header:=xlYes    
End Sub

当我按下按钮时,我收到没有描述的错误 400。

有什么建议吗?

【问题讨论】:

  • 如果我将 .OnAction = "File_01.Order_Ranking" 更改为 .OnAction = "Order_Ranking",对我有用。主代码是否检查按钮是否已创建?每次您运行该代码时,它都会在旧按钮之上创建另一个按钮 - 您不会看到它们,因为它们完美地叠放在一起。
  • 如果我删除“File_01”,我会收到错误消息“无法运行宏:此工作簿中可能没有该宏,或者所有宏都可能被禁用”。如果我在 order_ranking 宏中注释排名代码行并插入打印值操作,它可以正常工作。
  • 这与your previous question中的排序问题不一样吗?使用工作表限定范围 Range("B2:E18")
  • 没错,顺便说一句,我刚刚使用Worksheets("COPPIE + RANKING").Range("D2").Sort Key1:=Worksheets("COPPIE + RANKING").Range("D2"), Order1:=xlDescending, Header:=xlYes解决了

标签: excel vba button rank


【解决方案1】:

我不知道为什么,但最后这个公式奏效了:

Worksheets("COPPIE + RANKING").Range("D2").Sort Key1:=Worksheets("COPPIE + RANKING").Range("D2"), Order1:=xlDescending, Header:=xlYes

【讨论】:

  • 请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 您的答案包括对您正在做什么的解释以及为什么您认为这是最好的方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多