最近帮一个朋友求助,问能不能把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
分享到:
相关推荐
6. **存储和处理结果**:一旦找到了满足条件的单元格,你可以将相关信息存储在一个数组、列表或其他数据结构中,以便后续处理。 7. **宏的创建与运行**:在VBA编辑器中编写好代码后,可以将其保存为宏,通过Excel...
1. **颜色和样式**:可以使用`ForeColor`、`BackColor`等属性来改变单元格的字体颜色和背景色,`Font`属性可以设置字体样式。 2. **行高和列宽**:`SetColWidth`和`SetRowHeight`方法允许动态调整列宽和行高。 3. ...
6. **设置字体颜色与背景色**:为了突出显示重要的数据或单元格,可以通过设置单元格的字体颜色与背景色来实现: ```vb Rows(2).Interior.ColorIndex = 5 ' 设置第2行的背景色为黄色 Rows(1).Font.ColorIndex = 4...
1. **条件格式化**:条件格式化是Excel中的一种功能,允许用户根据单元格数据的特定条件自动改变单元格的样式,如颜色、字体或边框。通过这种方式,用户可以更直观地查看和理解数据,尤其是大数据集。 2. **VB与...
当需要增强用户界面的可读性和交互性时,我们可能会遇到一个需求:根据特定条件改变DataGrid的行或单元格颜色。"DateGrid(WinForm)行或单元格变色控件"就是针对这一需求的解决方案。 这个控件允许开发者设定一些...
例如,遍历数据并根据条件设置单元格格式: ```vb For i = 2 To lastRow '假设lastRow是数据的最后行 If Cells(i, 2).Value > threshold Then '如果满足条件 Cells(i, 2).Font.Color = vbRed '设置字体颜色 End ...
9. **为表格设置不同的背景色**:在显示数据库数据时,可能需要根据某些条件改变单元格或行的背景颜色,这通常通过设置控件的BackColor属性实现,结合条件判断来决定颜色。 10. **使用存储过程删除数据**:存储过程...
DataGridView指定单元格颜色设定 设置特定单元格的颜色。 - **设置颜色**: ```csharp DataGridView1.Rows[rowIndex].Cells[columnIndex].Style.BackColor = Color.Red; ``` #### 39. DataGridView单元格文字...
4. **设置样式**:应用字体、颜色、边框等样式属性。 5. **保存和输出**:将生成的PDF保存到指定路径,或者直接打印或邮件发送。 通过掌握这些知识点,开发者可以创建出功能丰富的PDF生成工具,满足多种业务需求。
6. **格式化单元格**:可以改变单元格的样式,如字体、颜色、对齐方式等: ```vb xlWorksheet.Range("A1").Font.Bold = True xlWorksheet.Range("A1").Font.ColorIndex = vbRed xlWorksheet.Range("A1")....
4. **表格打印**:对于数据呈现,VPrinter提供了表格打印功能,能够轻松打印网格线、单元格样式,以及自动换行和对齐。 5. **预览功能**:预览是打印过程中的重要环节,VPrinter提供了打印预览窗口,用户可以查看...
对于数值,可以设置小数位数,或使用条件格式化改变单元格的颜色。 5. **事件处理**: VB Columns支持多种事件,如`CellClick`、`CellFormatting`等。通过监听这些事件,可以实现用户交互,比如编辑、排序或过滤...
- 控件的属性设置,如字体、大小、颜色、位置等,可以通过属性窗口进行调整,以满足界面的美观和易用性。 3. **逻辑算法**: - 九宫格游戏的核心算法是回溯法。该算法尝试填充空单元格,并检查是否符合数独的规则...
- 可以用VB自动执行一系列步骤,如批量替换文本、合并多份文档等,提高工作效率。 8. **错误处理**: - 在编写VB代码时,应包含错误处理机制,如`On Error`语句,确保程序在遇到问题时能正常运行。 9. **文件...
6. **条件格式化**:可以根据数据值自动改变单元格的样式,如颜色、字体等,以突出显示关键信息。 7. **跨平台兼容性**:考虑到VB的广泛使用,一个好的报表控件应能兼容不同的操作系统和VB版本,包括VB6和VB.NET。 ...
同时,可以通过条件格式化根据数据值自动改变单元格的样式。 5. **交互性**:VB报表不仅限于静态展示,还可以实现用户交互。例如,用户可以通过按钮或下拉菜单选择不同的数据集、更改显示方式或打印报告。 6. **...
更进一步,你还可以扩展这个功能,例如结合条件格式化,只对满足特定条件的单元格应用粗体格式。比如,如果某个单元格的值大于100,我们希望该单元格的文本变为粗体,可以这样写: ```vba Sub ...
可以通过设置`DefaultCellStyle`、`AlternatingRowDefaultCellStyle`、`HeaderStyle`等属性来改变`DataGrid`的显示样式,比如字体、颜色、背景等。此外,还可以调整行高、列宽,以及是否显示网格线。 6. **数据...
首先,我们来看一个简单的例子,展示如何在`DataGridView`中设置相隔行的颜色。通过循环遍历行并改变背景色,我们可以实现交替行颜色的效果: ```vbnet For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1 ...