1

次のマクロを使おうとしていますが、マクロとして認識されていないため、実行できません。最初のlikeを「private/publicsub test()」に変更すると実行されますが、Targetオブジェクトが定義されていないと表示されます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target
    ' Highlight the entire row and column that contain the active cell
    .EntireRow.Interior.ColorIndex = 8
    .EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub
4

3 に答える 3

4

別のモジュールではなく、シート自体のコードにマクロを配置する必要があります。

そこで行っているのはイベントプログラミングです。これは、反応しようとしているものと一致する必要があります。

慣れ親しんだマクロではありません。イベントは何かが起こっていることに反応し、正常に実行できません。別のセルを選択すると (たとえば、選択を A1 から B2 に変更する)、コードは選択されているセルの変更に反応します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
選択が変更されたときに反応する
If Target.Cells.Count > 1 Then Exit Sub
複数のセルが選択されている場合は、残りのコードを実行しないで
Application.ScreenUpdating = False
ください 画面をオフにして、終了するまですべての変更を確認できないようにします 選択されたセルで、 そしてこれですべての色付けが完了しました。画面を元に戻して、作業の結果が表示されるようにします。
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target


' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True


End Sub

于 2012-09-18T13:31:23.633 に答える
0

モジュールでこのコードを試して、マクロとして呼び出します。

Public Sub Highlight()
  Application.ScreenUpdating = False
  ' Clear the color of all the cells
  ActiveSheet.Cells.Interior.ColorIndex = 0
  With ActiveCell
      ' Highlight the entire row and column that contain the active cell
      .EntireRow.Interior.ColorIndex = 8
      .EntireColumn.Interior.ColorIndex = 8
  End With
  Application.ScreenUpdating = True
End Sub

を使用する必要がPublicあるため、このサブはExcelのマクロメニューで使用できるようになります。そこでは、「従来の方法で」使用できます。ボタンまたはショートキーを割り当てることを理解しています。

于 2012-09-18T14:17:46.703 に答える
0

この回答は、ユーザーが選択したセルを変更した後、コードを EVENT として実行するという前提に基づいています。

このコードを 1 つのワークシートでのみ実行する場合は、これを WORKSHEET OBJECT に配置します。 ここに画像の説明を入力

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub

    Application.ScreenUpdating = False
    ' Clear the color of all the cells
    Target.Parent.Cells.Interior.ColorIndex = 0
    With Target
        ' Highlight the entire row and column that contain the active cell
        .EntireRow.Interior.ColorIndex = 8
        .EntireColumn.Interior.ColorIndex = 8
    End With
    Application.ScreenUpdating = True
End Sub

これをすべてのワークシートで実行する場合は、これを THISWORKBOOK OBJECT に配置します (シートを省略/含める場合は、sh でフィルターできます)。

ここに画像の説明を入力

オプション明示

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    If Target.Cells.Count > 1 Then Exit Sub

    Application.ScreenUpdating = False
    ' Clear the color of all the cells
    Sh.Cells.Interior.ColorIndex = 0
    With Target
        ' Highlight the entire row and column that contain the active cell
        .EntireRow.Interior.ColorIndex = 8
        .EntireColumn.Interior.ColorIndex = 8
    End With
    Application.ScreenUpdating = True

End Sub
于 2012-09-18T18:50:26.087 に答える