【问题标题】:Excel fails to read out variableExcel 无法读出变量
【发布时间】:2013-02-11 18:00:09
【问题描述】:

我有以下代码:

Dim FinalAddr As Range
Dim Final As String

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next


Select Case UCase(Target.Value)


   Case "NEW-BOX"
        Selection.Offset(-1, 2).Select
        FinalAddr = Range(Selection.Address)
        MsgBox FinalAddr ' Debug, nothing comes up however
        Selection.ClearContents
        Selection.Offset(1, -2).Select

   Case "END-BOX"
        Final = FinalAddr.Value
        Application.Speech.Speak (Final)

    End Select
End Sub

但是,当我扫描新盒子时没有任何反应,是否所有语法都正确?我没有收到任何错误,任何输入将不胜感激。

【问题讨论】:

  • 您是否尝试在Case "NEW-BOX" 上设置断点?
  • End Select 语句之前插入Case Else: MsgBox "You provided " & UDase(Target.Value),以查看正在检查的内容。
  • 你想在 MsgBox 中打印什么?
  • @AndreyGordeev 我尝试了一个断点,但是代码执行得很好,只是没有设置变量。
  • @mattboy 我希望它打印选择的范围,所以我可以检查变量是否正在设置,但它根本没有设置

标签: excel excel-2007 vba


【解决方案1】:

这就是你所追求的吗?

   Case "NEW-BOX"
        Selection.Offset(-1, 2).Select
        MsgBox Selection.Address ' Debug, nothing comes up however
        Selection.ClearContents
        Selection.Offset(1, -2).Select

编辑:如果您想将 FinalAddr 设置为选择然后测试它是否有效:

   Case "NEW-BOX"
        Selection.Offset(-1, 2).Select
        Set FinalAddr = Selection
        MsgBox FinalAddr ' Debug, nothing comes up however
        Selection.ClearContents
        Selection.Offset(1, -2).Select

【讨论】:

  • 对不起,我正在尝试将 FinalAddr 变量设置为范围,然后获取该范围的值并将其传递给下一个案例中的语音合成
  • 然后删除.address
  • 对,只需在第二个示例中删除 .Address 即可获取值,请参阅更新后的帖子。
  • 谢谢,这是正确的,解决了我的问题,现在一切正常。
【解决方案2】:

如果你想要单元格中的值,你应该使用Finaladdr = Selection.Value,但如果你想要地址选择,你应该使用= Selection.AddressLocal()

但是,如果您想引用范围,则需要在引用单元格地址时使用Set,然后使用.AddressLocal()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2019-03-26
    • 2019-11-21
    • 2020-08-02
    • 2017-07-21
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多