Worksheet_SelectionChange未从Selection.Offset触发

时间:2017-05-30 21:25:01

标签: excel excel-vba excel-formula excel-2010 excel-2007 vba

我试图将给定列中的单元格选择用作事件。如果我用鼠标点击或箭头进入列中的单元格,则此方法有效。

我想通过使用Selection.Offset或ActiveCell.Offset或类似内容来访问此列。但是当通过此偏移函数选择给定列中的单元格时,它似乎不算作SelectionChange事件,因此不会激活我的下一个宏。

  1. 当数据输入"高度"列,调用Height_To_Comments()
  2. Height_To_Comments()移至"评论"来自"身高"在同一行
  3. 有或没有数据输入,在"评论"列,ENTER调用Comments_To_Weight()
  4. Comments_To_Weight()返回" Weight"来自"评论"然后连续

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H3:H52")) Is Nothing Then
    Call Height_To_Comments
    End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    x = 0
    For Each cell In Target
    If cell.Column <> 13 Then x = 1
    Application.OnKey "~"
    Application.OnKey "{ENTER}"
    Next cell
    If x = 0 Then
    Application.OnKey "~", "Comments_To_Weight"
    Application.OnKey "{ENTER}", "Comments_To_Weight"
        End If
    End Sub
    
    
    Sub Height_To_Comments()
    Selection.Offset(-1, 5).Select
    End Sub
    
    Sub Comments_To_Weight()
    Selection.Offset(1, -7).Select
    End Sub
    

1 个答案:

答案 0 :(得分:0)

我解决了。
只有在注释列本身进行了选择更改(而不是在光标到达注释列之前的先前高度列)之后,我才更改了“〜”和“{ENTER}”的功能。我对其进行了更改,以便在高度列中进行选择更改时,“〜”和“{ENTER}”的功能会发生变化。因此,一旦数据输入高度,工作表就会选中注释,然后当用户点击ENTER或者它正确地返回到下一行的权重时,而不是直接进入下一行然后下一次输入被击中它进入下一行并留下7列。

=a1-day(a1) 更改为If cell.Column <> 13 Then x = 1