0

我有一个如下所示的 Excel,它是一个 sharedExcel。

在此处输入图像描述

现在我不应该为背景颜色为灰色的行设置粘贴选项(这些在运行时不固定,任何行都可能变成灰色)。因为它共享Excel,所以我不能使用 Lock 属性。任何帮助将不胜感激。

4

2 回答 2

0

使用颜色作为用于检查真/假的属性是不好的行为。例如,您可以通过添加一列(如果需要,隐藏)来解决此问题,该列具有 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 回答
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 回答