Excel复选框更改行背景色

时间:2018-08-11 17:28:30

标签: excel excel-vba

我创建一些表,并在输入数据时进行日期戳

在“ A”列中,日期显示在“ E”列中,所以我知道何时输入数据。

我在“ F”列中放置了复选框,但我需要下一个帮助:

  1. 选中此复选框时,日期必须写在“ G”列中
  2. 从“ A到D”的背景(但仅限此行)必须更改为红色
  3. A,B和C中的数据也必须复制到A,B和C中的另一张纸上。

我希望有人会帮助我,因为我卡住了:(

我还攻击了屏幕截图。

预先感谢

Screenshot

1 个答案:

答案 0 :(得分:0)

这些步骤将帮助您使宏正常运行,并确保您在工作簿的副本上尝试使用代码

添加命令按钮(ActiveX控件)并粘贴宏 注意:您需要确保将“命令按钮”放置在具有复选框的工作表中。

步骤1: 复制“ LoopCkBoxesAddDateStampClrCelsCopy()”宏

Sub LoopCkBoxesAddDateStampClrCelsCopy()
Dim lRow As Long
Dim CkBx As OLEObject

'For/Next loop cycles through all checkboxes in worksheet
For Each CkBx In ActiveSheet.OLEObjects
    lRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
    'If the checkbox is checked then accomplish the lines of code between the If/End If
    'The part after the "And" ensures that if a date is in the cell it will not be over written
    If CkBx.Object.Value = True And CkBx.TopLeftCell.Offset(, 1).Value = "" Then
        'Next line of code puts the date in first cell to left of the checkbox
        CkBx.TopLeftCell.Offset(, 1).Value = Format(Date, "mm-dd-yyyy")
        'Next line of code colors the first 4 cells in checkboxs' row
        CkBx.TopLeftCell.Offset(, -5).Resize(, 4).Interior.Color = vbRed
        'Next line of code copies the first 3 cell in the checkbox row to the first empty row on sheet 2
        Sheet2.Cells(lRow, 1).Offset(1).Resize(, 3).Value2 = CkBx.TopLeftCell.Offset(, -5).Resize(, 3).Value2
    End If
Next CkBx 'loops to the next checkbox

End Sub

注意:如果您打算将单元格粘贴到其他工作表,请在代码中更改两个Sheet2。

步骤2: 在“开发人员”选项卡上的“控件”组中,单击“插入”,然后在“ ActiveX控件”下,单击“命令按钮”。

步骤3: 单击您希望命令按钮出现的工作表位置。

第4步: 右键单击该按钮,然后单击“查看代码”。这将启动Visual Basic编辑器。

第5步: 在VBE中,突出显示Private Sub CommandButton1_Click()和End Sub,然后粘贴宏

步骤6: 关闭Visual Basic编辑器,然后单击“设计模式按钮”图像以确保关闭设计模式。

步骤7: 选中工作表中的复选框,然后单击按钮以运行宏

enter image description here

enter image description here

enter image description here