0

以下に示すように、sharedExcel である Excel があります。

ここに画像の説明を入力

ここで、バックカラーがGRAYの行の貼り付けオプションを許可しないようにする必要があります(これらは実行時に修正されず、どの行も GRAY 色になる可能性があります)。それはExcelを共有しているため、Lockプロパティを使用できません。どんな助けでも大歓迎です。

4

2 に答える 2

0

この問題に時間を費やした後、私は次の行をコーディングしました。それは大丈夫です。ここでは、コーディングの目的でPasteSheetという別のスプレッドシートを使用しましたが、ユーザーには表示していません。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode Then
    SelectedRow = ActiveCell.Row
    With Sheets("PasteSheet")
        .Activate
        .Range("A1").PasteSpecial xlPasteValues
        CR = Selection.Rows.Count
    End With
    Worksheets("ActualSheet").Activate
    For k = SelectedRow To (SelectedRow + CR)
        If Worksheets("ActualSheet").Cells(k, 30).Interior.Color = RGB(215, 215, 215) Then
            Application.EnableEvents = False
            MsgBox "Pasting is not allowed here!"
            'Clearing data in PasteSheet
            Worksheets("PasteSheet").Cells.ClearContents
            Worksheets("ActualSheet").Activate
            Application.EnableEvents = True
            Exit Sub
        End If
    Next
End If

サブ終了

于 2013-01-18T07:27:52.287 に答える
0

true / false をチェックするために使用されるプロパティとして色を使用することは、悪い動作です。たとえば、コンボボックスなどでアクセスできるようにする 0 / 1 または TRUE / FALSE の列 (必要に応じて非表示) を追加することで、これを回避できます (その後、この cbb ボックスをクリックして色を灰色に適応させることができます)。

シート イベント on_Change を介して、動的に構成された範囲を確認できます。シート イベントの基本的な構文:

Private Sub Worksheet_Change(ByVal Target As Range)
'Set range dynamically instead of this hard coded example 
If Not Intersect(Target, Thisworkbook.Sheets(1).Range("A1:A10")) Is Nothing Then 
    'Do something 
End If
End Sub
于 2013-01-17T15:19:42.523 に答える