1

ワークブックには次のコードがあります。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'toggles worksheet colors
'code will remove all color
'and color active row and column

  If ActiveCell.Interior.ColorIndex <> xlNone Then
     Cells.Interior.ColorIndex = xlNone
  Else
     Cells.Interior.ColorIndex = xlNone
     ActiveCell.EntireRow.Interior.ColorIndex = 4
End If
End Sub

そしてうまくいきます。ただし、行に初期色がある場合は削除されます。アクティブな行がどのように強調表示され、行を変更することで最初の色が得られるか教えてください。

4

2 に答える 2

1

くそー、アドインが見つかりませんでしたが、コードを再作成しました。これは完全にテストされていないことに注意してください。私が行ったどんな小さなテストでも、それは機能します...

ロジック:

  1. 非表示のシートを作成します。
  2. その非表示シートの行 1 に現在のセルの書式を保存します。
  3. A2アクティブシートで現在選択されている行番号を非表示シートのセルに格納します
  4. 別の行に移動すると、最後の行番号を取得して復元します。

コード:

このワークブックのコード領域

ここに画像の説明を入力

Private Sub Workbook_Open()
    Dim ws As Worksheet

    '~~> Delete the Temp sheet we created i.e if we created
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("MyHiddenSheet").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True

    '~~> ReCreate the Sheet
    Set ws = ThisWorkbook.Sheets.Add
    '~~> i am using a normal name. Chnage as applicable
    ws.Name = "MyHiddenSheet"
    '~~> Hide the sheet
    ws.Visible = xlSheetVeryHidden
End Sub

関連するシート コード領域。私はSheet1例として使用しています

ここに画像の説明を入力

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '~~> Don't do anything if multiple cells are selected
    If Target.Cells.CountLarge > 1 Then Exit Sub

    Dim ws As Worksheet

    '~~> Set our relevant sheet
    Set ws = ThisWorkbook.Sheets("MyHiddenSheet")

    '~~> Get the row number of the last row we had selected earlier
    '~~> For obvious reasons, this will be empty for the first use.
    If Len(Trim(ws.Cells(2, 1).Value)) <> 0 Then
        '~~> If user has moved to another row then
        '~~> Restor the old row
        If Target.Row <> Val(ws.Cells(2, 1).Value) Then
            ws.Rows(1).Copy
            Rows(ws.Cells(2, 1).Value).PasteSpecial xlFormats
        End If
    End If

    '~~> Copy the current row's format to the hidden sheet
    Rows(Target.Row).Copy
    ws.Rows(1).PasteSpecial xlFormats
    '~~> Store the current rows value in cell A2
    ws.Cells(2, 1).Value = Target.Row

    '~~> Highlight the current row in a shade of blue.
    '~~> Chnage as applicable
    With Rows(Target.Row).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent5
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
        Rows(Target.Row).Select
    End With

    '~~> Remove the `Ants` which appear after you do a copy
    Application.CutCopyMode = False
End Sub

スクリーンショット:

ここに画像の説明を入力

于 2013-09-21T09:12:19.333 に答える