0

次のコードがあります。

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

しかし、新しいボックスをスキャンしても何も起こりません。構文はすべて正しいですか? エラーは発生しません。どんな入力でも大歓迎です。

4

2 に答える 2

2

これはあなたが求めているものですか?

   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
于 2013-02-26T10:36:39.927 に答える
0

セルの値が必要な場合はを使用する必要があり Finaladdr = Selection.Valueますが、アドレスが必要な場合は選択を使用する必要があります= Selection.AddressLocal()

ただし、範囲を参照する場合は、セルのアドレスを参照するときに使用する必要がありSetます。.AddressLocal()

于 2013-02-26T10:37:38.310 に答える