簡體   English   中英

Worksheet_SelectionChange(ByVal目標為范圍),目標中有兩個單元格

[英]Worksheet_SelectionChange(ByVal Target As Range), Two Cells in Target

我正在使用事件處理程序,並且如果選擇一個或兩個單元格,則會運行某些事件。 我遇到的問題是,當選擇兩個單元格時,我不知道如何訪問該第二個單元格的屬性(即,它的值是多少)。 任何想法,我如何可以訪問所選的第二個單元格的值(我希望Target是一個數組對象,並且我可以按數組索引選擇...。)

Public Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error GoTo disError
If Target.Cells.Count > 2 Or Target.Address = Range("DataHist").Address Then Exit Sub

Dim curve As String
Dim Ticker As String
Dim TickerTwo As String
Dim lastValue As Double
TickerTwo = ""

If Target.Cells.Count = 1 Then
    Ticker = Target.Value
    lastValue = Round(Target.Offset(0, 1).Value, 3)
    curve = CheckLabel(Target)
Else
    ' This is where the issue is --------------------------------
    Ticker = Target.Cells(1, 1).Value
    TickerTwo = Target.Next.Value
    lastValue = Round(Target.Offset(0, 1).Value, 3)
    curve = CheckLabel(Target)
    ' -----------------------------------------------------------
End If

Select Case curve
    Case "na"
        Exit Sub
    Case "Test1"
        Call FillChart("Test1", Ticker, lastValue, TickerTwo)
    Case "Test2"
        Call FillChart("Test2", Ticker, lastValue, TickerTwo)

End Select

disError:
End Sub

如果您不知道用戶是要選擇列中的單元格還是行中的單元格,甚至是單元格塊,請使用循環和計數器:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim r As Range, i As Long
    i = 1
    If Target.Count > 1 Then
        For Each r In Target
            MsgBox r.Address(0, 0) & vbCrLf & i
            i = i + 1
        Next r
    End If
End Sub

然后在i = 2時進行處理 如果選擇了塊或行,則為右單元格;如果選擇了列的一部分,則為右下方單元格。

盡管這不是一個漂亮的代碼,但是即使用戶選擇了一組不相交的單元格,它也至少會起作用。

編輯#1:

如果您願意解析Selection.Address則可以避免丑陋的循環

編輯#2:

如果用戶選擇2個且僅選擇2個單元格,則此代碼(無循環)將起作用:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim s As String
    If Target.Count = 2 Then
        s = Split(Replace(Target.Address(0, 0), ":", ","), ",")(1)
        MsgBox "The second cell is: " & s
    End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM