2017-01-25 11 views
-1

私はこのコードを使用しています:vbaはターゲットを選択した後にオフセットセルを選択しますか?働いていない?

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    Application.EnableEvents = True 
    On Error GoTo Errormask 

    With Target 
     If .Column = 30 And .Row > 16 And .Value = "Remove" Then 
      .EntireRow.Delete 
      Target.Offset(, 2).Select 
     End If 
    End With 

Errormask: 
    Application.DisplayAlerts = False 
    Exit Sub 

End Sub 

ユーザーは、「削除」を含む列30のセルをクリックすると、それが行を削除し、全体でセル1を選択する必要があります。

これは機能しません。誰かが私がどこに間違っているのかを教えてもらえますか?

+0

「セル1横断」とは何ですか?あなたは左に1セルを意味しますか?右? tob?ダウン?対角? –

+0

すでに 'With'になっているので、' Target.Offset(、2).Select'から 'Target'を最初に削除してください。 –

+0

@TimWilkinsonは、ターゲットの有無にかかわらずまだ動作しません。 – user7415328

答えて

0

は、行全体を削除する前に、以下の行にオフセットします。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
With Target 
If Target.CurrentRegion.Count = 1 And Target.Cells.Count = 1 Then 
    If .Column = 30 And .Row > 16 And .Value Like "Remove" Then 
     .Offset(1, 2).Select 
     .EntireRow.Delete 
    End If 
End If 
End With 
Application.DisplayAlerts = False 
End Sub 

シートのコードにはありますが、モジュールではありませんか?私は選択セルをチェックするために、新しいIfを追加した

EDITは最初にマージされていない、とだけ単一のセルが選択されています。

+0

これは17行目以降にのみ有効です。このコードでは、ブックの他の場所にあるセルをクリックすると型の不一致エラーが発生します。 – user7415328

+0

マージされたセルをクリックすると、これが起こりますか? –

+0

はいいいえ – user7415328

0

以下のコード試してみてください:あなたのwith

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    Application.EnableEvents = True 
    On Error GoTo Errormask '<-- don't see the need for this line 

    With Target 
     If .Column = 30 And .Row > 16 And .Value Like "Remove" Then 
      .EntireRow.Delete 
      .Offset(, 2).Select 
     End If 
    End With 

Errormask: '<-- don't see the need for this line 
    Application.DisplayAlerts = False 
    Exit Sub '<-- don't see the need for this line, anyway at the end of the Sub 

End Sub 
関連する問題