`
liuqiang9861020
  • 浏览: 1931 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

VB 自动设置满足条件的单元格的颜色

阅读更多
最近帮一个朋友求助,问能不能把excel里某一列的时间钟,把大于一个时间的单元格标记出来。有一个参考时间,从参考时间算起往后数3天,遇到节假日自动顺延。

代码如下


Private Sub Workbook_Open()
Dim rng1 As Range
Dim rng2 As Range

Dim i As Integer
Dim flag As Boolean
Dim j As Integer
Dim allrows As Integer

Dim tempDate As Date
Dim validateDates(1 To 3) As Date
Dim japanHolidays(1 To 17) As Date

Set rng1 = ThisWorkbook.Application.Range("A1")
allrows = ThisWorkbook.Application.Range("B65536").End(xlUp).Row
Set rng2 = ThisWorkbook.Application.Range("B1:B" & allrows)

i = 1
flag = True
j = 1

tempDate = DateSerial(Year(rng1.Value), Month(rng1.Value), Day(rng1.Value))


japanHolidays(1) = #1/1/2015#
japanHolidays(2) = #1/12/2015#
japanHolidays(3) = #2/11/2015#
japanHolidays(4) = #3/21/2015#
japanHolidays(5) = #4/29/2015#
japanHolidays(6) = #5/3/2015#
japanHolidays(7) = #5/4/2015#
japanHolidays(8) = #5/5/2015#
japanHolidays(9) = #5/6/2015#
japanHolidays(10) = #7/20/2015#
japanHolidays(11) = #9/21/2015#
japanHolidays(12) = #9/22/2015#
japanHolidays(13) = #9/23/2015#
japanHolidays(14) = #10/12/2015#
japanHolidays(15) = #11/3/2015#
japanHolidays(16) = #11/23/2015#
japanHolidays(17) = #12/23/2015#

While flag
    If Weekday(tempDate, vbMonday) > 5 Or isHoliday(tempDate, japanHolidays) Then
       tempDate = DateAdd("d", 1, tempDate)
    Else
        validateDates(i) = tempDate
        i = i + 1
        tempDate = DateAdd("d", 1, tempDate)
            If i = 4 Then
                flag = False
            End If
    End If
Wend

Debug.Print tempDate


For j = 1 To rng2.Rows.Count
    rng2.Cells(j, 1).Select
    
    If shouldMarked(DateSerial(Year(rng2.Cells(j, 1).Value), Month(rng2.Cells(j, 1).Value), Day(rng2.Cells(j, 1).Value)), validateDates) Then
        
        rng2.Cells(j, 1).Interior.ColorIndex = 3
        Else
            rng2.Cells(j, 1).Interior.ColorIndex = 0
    End If
    
    
    
Next
rng2.Cells(1, 1).Select
End Sub



Private Function isHoliday(tempDate1 As Date, japanHolidays1() As Date) As Boolean
Dim k As Integer
isHoliday = False
For k = 1 To UBound(japanHolidays1)
If (japanHolidays1(k) = tempDate1) Then
isHoliday = True
Exit For
End If
Next
End Function



Private Function shouldMarked(tempDate1 As Date, validateDates1() As Date) As Boolean
Dim q As Integer
shouldMarked = False
For q = 1 To UBound(validateDates1)
If (validateDates1(q) = tempDate1) Then
shouldMarked = True
Exit For
End If
Next
End Function

分享到:
评论

相关推荐

    VBA示例之 获取一个单元格中有指定字体颜色部份数据

    6. **存储和处理结果**:一旦找到了满足条件的单元格,你可以将相关信息存储在一个数组、列表或其他数据结构中,以便后续处理。 7. **宏的创建与运行**:在VBA编辑器中编写好代码后,可以将其保存为宏,通过Excel...

    MSFlexGrid做单元格输入示例

    1. **颜色和样式**:可以使用`ForeColor`、`BackColor`等属性来改变单元格的字体颜色和背景色,`Font`属性可以设置字体样式。 2. **行高和列宽**:`SetColWidth`和`SetRowHeight`方法允许动态调整列宽和行高。 3. ...

    浅谈Excel 的VB编程.

    6. **设置字体颜色与背景色**:为了突出显示重要的数据或单元格,可以通过设置单元格的字体颜色与背景色来实现: ```vb Rows(2).Interior.ColorIndex = 5 ' 设置第2行的背景色为黄色 Rows(1).Font.ColorIndex = 4...

    VBEXCEL条件格式化工具的设计与实现论文

    1. **条件格式化**:条件格式化是Excel中的一种功能,允许用户根据单元格数据的特定条件自动改变单元格的样式,如颜色、字体或边框。通过这种方式,用户可以更直观地查看和理解数据,尤其是大数据集。 2. **VB与...

    DateGrid(WinForm)行或单元格变色控件

    当需要增强用户界面的可读性和交互性时,我们可能会遇到一个需求:根据特定条件改变DataGrid的行或单元格颜色。"DateGrid(WinForm)行或单元格变色控件"就是针对这一需求的解决方案。 这个控件允许开发者设定一些...

    利用VB操作EXCEL来生成复杂的报表

    例如,遍历数据并根据条件设置单元格格式: ```vb For i = 2 To lastRow '假设lastRow是数据的最后行 If Cells(i, 2).Value > threshold Then '如果满足条件 Cells(i, 2).Font.Color = vbRed '设置字体颜色 End ...

    VB数据库程序源码大全

    9. **为表格设置不同的背景色**:在显示数据库数据时,可能需要根据某些条件改变单元格或行的背景颜色,这通常通过设置控件的BackColor属性实现,结合条件判断来决定颜色。 10. **使用存储过程删除数据**:存储过程...

    C#和VB.Net DataGridView用法總結

    DataGridView指定单元格颜色设定 设置特定单元格的颜色。 - **设置颜色**: ```csharp DataGridView1.Rows[rowIndex].Cells[columnIndex].Style.BackColor = Color.Red; ``` #### 39. DataGridView单元格文字...

    用VB代码生成PDF文件

    4. **设置样式**:应用字体、颜色、边框等样式属性。 5. **保存和输出**:将生成的PDF保存到指定路径,或者直接打印或邮件发送。 通过掌握这些知识点,开发者可以创建出功能丰富的PDF生成工具,满足多种业务需求。

    VB编写的Excel操作源代码

    6. **格式化单元格**:可以改变单元格的样式,如字体、颜色、对齐方式等: ```vb xlWorksheet.Range("A1").Font.Bold = True xlWorksheet.Range("A1").Font.ColorIndex = vbRed xlWorksheet.Range("A1")....

    VB打印控件,专门解决VB打印难的问题

    4. **表格打印**:对于数据呈现,VPrinter提供了表格打印功能,能够轻松打印网格线、单元格样式,以及自动换行和对齐。 5. **预览功能**:预览是打印过程中的重要环节,VPrinter提供了打印预览窗口,用户可以查看...

    VB Columns的举例说明

    对于数值,可以设置小数位数,或使用条件格式化改变单元格的颜色。 5. **事件处理**: VB Columns支持多种事件,如`CellClick`、`CellFormatting`等。通过监听这些事件,可以实现用户交互,比如编辑、排序或过滤...

    九宫格VB测试

    - 控件的属性设置,如字体、大小、颜色、位置等,可以通过属性窗口进行调整,以满足界面的美观和易用性。 3. **逻辑算法**: - 九宫格游戏的核心算法是回溯法。该算法尝试填充空单元格,并检查是否符合数独的规则...

    VB操作word的一些经验总结,资料

    - 可以用VB自动执行一系列步骤,如批量替换文本、合并多份文档等,提高工作效率。 8. **错误处理**: - 在编写VB代码时,应包含错误处理机制,如`On Error`语句,确保程序在遇到问题时能正常运行。 9. **文件...

    vb 报表打印控件

    6. **条件格式化**:可以根据数据值自动改变单元格的样式,如颜色、字体等,以突出显示关键信息。 7. **跨平台兼容性**:考虑到VB的广泛使用,一个好的报表控件应能兼容不同的操作系统和VB版本,包括VB6和VB.NET。 ...

    vb-report3

    同时,可以通过条件格式化根据数据值自动改变单元格的样式。 5. **交互性**:VB报表不仅限于静态展示,还可以实现用户交互。例如,用户可以通过按钮或下拉菜单选择不同的数据集、更改显示方式或打印报告。 6. **...

    conciliaciones en excel_VBexcel_

    更进一步,你还可以扩展这个功能,例如结合条件格式化,只对满足特定条件的单元格应用粗体格式。比如,如果某个单元格的值大于100,我们希望该单元格的文本变为粗体,可以这样写: ```vba Sub ...

    vb+datagrid

    可以通过设置`DefaultCellStyle`、`AlternatingRowDefaultCellStyle`、`HeaderStyle`等属性来改变`DataGrid`的显示样式,比如字体、颜色、背景等。此外,还可以调整行高、列宽,以及是否显示网格线。 6. **数据...

    VB DataGridView控件的使用

    首先,我们来看一个简单的例子,展示如何在`DataGridView`中设置相隔行的颜色。通过循环遍历行并改变背景色,我们可以实现交替行颜色的效果: ```vbnet For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1 ...

Global site tag (gtag.js) - Google Analytics