直接上代码~~

1.  在一个 Excel 生成当月或当年指定月份的日期及星期

' 获取星期的显示
Function disp(i As Integer)
Select Case i
Case
disp = "一"
Case
disp = "二"
Case
disp = "三"
Case
disp = "四"
Case
disp = "五"
Case
disp = "六"
Case Else
disp = "日"
End Select
End Function ' 获取当月的天数
Function GetDaysOfMonth(Year As String, Month As String) As Integer
Dim Day1, Day2 As String
If Month = "" Then
GetDaysOfMonth =
Else
Day1 = Year + "-" + Month + "-1"
Day2 = Year + "-" + CStr(CInt(Month) + ) + "-1"
GetDaysOfMonth = DateDiff("d", Day1, Day2)
End If
End Function Sub AddSheets()
Dim i As Integer
Dim DaysOfMonth As Integer
Dim NameStr As String
Dim DateStr As String
Dim CurrMonth As Integer
Dim MonStr As String
Dim CurrYear As String
Dim Choice As Integer
Dim LastMonth As Integer
Dim OriginSheet As String Application.DisplayAlerts = False
For i = Sheets.Count To Step -
If Sheets(i).Name <> ActiveSheet.Name Then
Sheets(i).Delete
End If
Next ActiveSheet.Name = "LastSheet"
OriginSheet = ActiveSheet.Name CurrMonth = CInt(Month(Now)) ' 设置起始及结束月份(1-12); 默认当前月
StartMonth = CurrMonth
LastMonth = CurrMonth CurrYear = CStr(Year(Now))
For m = StartMonth To LastMonth
MonStr = CStr(m)
DaysOfMonth = GetDaysOfMonth(CurrYear, MonStr)
For i = To DaysOfMonth
Worksheets.Add after:=Worksheets(Worksheets.Count)
NameStr = MonStr & "-" & CStr(i)
DateStr = CurrYear & "-" & NameStr
ActiveSheet.Name = NameStr
ActiveSheet.[A1].Value = DateStr
ActiveSheet.[B1].Value = "星期" & disp(Weekday(DateStr, vbMonday)) ' 设置单元格行列宽高自适应
ActiveSheet.[A1].Columns.AutoFit
ActiveSheet.[A1].Rows.AutoFit
ActiveSheet.[B1].Columns.AutoFit
ActiveSheet.[B1].Rows.AutoFit
Next
Next
Sheets(OriginSheet).Delete
On Error Resume Next
Application.DisplayAlerts = True
End Sub

2.  生成直到2099年的日期及月份,每个月份一个 Excel

' 获取星期的显示
Function disp(i As Integer)
Select Case i
Case
disp = "一"
Case
disp = "二"
Case
disp = "三"
Case
disp = "四"
Case
disp = "五"
Case
disp = "六"
Case Else
disp = "日"
End Select
End Function ' 获取当月的天数
Function GetDaysOfMonth(Year As String, Month As String) As Integer
Dim Day1, Day2 As String
If Month = "" Then
GetDaysOfMonth =
Else
Day1 = Year + "-" + Month + "-1"
Day2 = Year + "-" + CStr(CInt(Month) + ) + "-1"
GetDaysOfMonth = DateDiff("d", Day1, Day2)
End If
End Function Sub AddSheets(Year As String, Month As String)
Dim i As Integer
Dim DaysOfMonth As Integer
Dim NameStr As String
Dim DateStr As String
Dim CurrMonth As Integer
Dim MonStr As String
Dim OriginSheet As String For i = Sheets.Count To Step -
If Sheets(i).Name <> ActiveSheet.Name Then
Sheets(i).Delete
End If
Next ActiveSheet.Name = "LastSheet"
OriginSheet = ActiveSheet.Name MonStr = CStr(Month)
DaysOfMonth = GetDaysOfMonth(Year, MonStr)
For i = To DaysOfMonth
Worksheets.Add after:=Worksheets(Worksheets.Count)
NameStr = MonStr & "-" & CStr(i)
DateStr = Year & "-" & NameStr
ActiveSheet.Name = NameStr
ActiveSheet.[A1].Value = DateStr
ActiveSheet.[B1].Value = "星期" & disp(Weekday(DateStr, vbMonday)) ' 设置单元格行列宽高自适应
ActiveSheet.[A1].Columns.AutoFit
ActiveSheet.[A1].Rows.AutoFit
ActiveSheet.[B1].Columns.AutoFit
ActiveSheet.[B1].Rows.AutoFit
Next
Sheets(OriginSheet).Delete
On Error Resume Next End Sub Sub AddExcels(Year As String)
Dim wb As Workbook
Dim wbname As String
Dim m As Integer
Dim Month As String For m = To
Set wb = Workbooks.Add
Month = CStr(m)
Call AddSheets(Year, Month)
wbname = Year & "年" & CStr(Month) & "月.xlsx"
wb.SaveAs "d:\" & wbname
Workbooks(wbname).Close (True)
Next End Sub Sub AddExcels2099()
Dim Year As Integer Application.DisplayAlerts = False
For Year = To
AddExcels (CStr(Year))
Next
Workbooks(ActiveWorkbook.Name).Close (False)
Application.DisplayAlerts = True End Sub

小记:

(1)  函数返回值,使用函数名作为变量在最后一行赋值;

(2)  调用过程: CALL SubName(ArgList) ;

(3)  变量名、函数名习惯大写;

(4)  Switch , If, For , Sub, Function 定义代码里有;

(5)  整数转字符串 CStr,  字符串转整数 CInt ; 字符串连接 & ;

(6)  当前活动工作表 ActiveSheet , 当前活动工作簿: ActiveWorkBook ;

(7)  操作当前活动工作表: ActiveSheet.Name,  ActiveSheet.[CellID].Value ; ActiveSheet.[A1].Columns, ActiveSheet.[A1].Rows 行列设置;

(8)  工作簿操作:  新增 Set wb = Workbooks.Add ; 保存 wb SaveAs "Path/file.xlsx" ;  关闭  Workbooks(wbname).Close (True) .

无论怎样的编程语言, 函数或过程复用是最基本的技能;

只要是在计算设备上, 99%的人工操作均可自动化。

VBA 操作 Excel 生成日期及星期的更多相关文章

  1. [转] C#操作EXCEL,生成图表的全面应用

    gailzhao 原文 关于C#操作EXCEL,生成图表的全面应用 近来我在开发一个运用C#生成EXCEL文档的程序,其中要根据数据生成相应的图表,该图表对颜色和格式都有严格的要求,在百度和谷歌中搜索 ...

  2. VBA操作word生成sql语句

    项目开始一般都是用word保存下数据库的文档 但是从表单一个一个的建表实在是很困难乏味,查查资料 1.可以生成一个html或者xml,检索结构生成sql.但是这个方式也蛮麻烦 2.查到vba可以操作w ...

  3. Excel vba:批量生成超链接,添加边框,移动sheet等

    Excel vba 操作 批量生成sheet目录并添加超链接 Sub Add_Sheets_Link() 'Worksheets(5)为清单目录页 '在sheet页上生成sheet页名字并超链接 To ...

  4. VBA在Excel中的应用(三)

    目录  Chart Export Chart Format Chart Lengend  Chart Protect  Chart Title  Chart Chart Export 1. 将Exce ...

  5. 使用Win32::OLE操作Excel——Excel对象模型

    像VBA操作Excel一样,Win32::OLE模块也是通过对象操作来控制Excel. 如果想自动化操作和控制Excel应用程序,则必须要与Excel对象模型所提供的对象进行交互.理解和熟悉Excel ...

  6. VC操作Excel之基本操作(颜色等)【转载】

    文章出处https://blog.csdn.net/form88/article/details/78566390 EXCEL里如何知道某种颜色的ColorIndex的值 ===fag::====== ...

  7. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  8. Java生成和操作Excel文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  9. Excel VBA 操作 Word(入门篇)

    原文地址 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人.   一.新建Word引用 需要首先创建一个对 Word A ...

随机推荐

  1. nginx“虚拟目录”不支持php的解决办法

    这几天在配置Nginx,PHP用FastCGI,想装一个phpMyAdmin管理数据库,phpMyAdmin不想放在网站根目录 下,这样不容易和网站应用混在一起,这样phpMyAdmin的目录就放在别 ...

  2. web前端开发CSS命名规范参考

    做为一个web前端工程师,每天接触HTML.css就像吃饭一样,但是作为一名合作.优秀的web前端工程师,对DIV+CSS命名还是有一定的规范的,本文整理了一份web前端开发中DIV+CSS各种命名规 ...

  3. Oracle10g RAC的简单操作

    1.查看OCR位置用户指定的位置会被放置在 /etc/oracle/ocr.loc(Liunx系统) 或 /var/opt/oracle/ocr.loc [oracle@rac4 opt]$ cat ...

  4. Html5 与 Html4 的区别

    HTML5是HTML标准的下一个版本.虽然HTML5没有完全颠覆HTML4,但是它们也有一些不同.最新最全的HTML5-HTML4对比信息 请看http://dev.w3.org/html5/html ...

  5. Java实现智能机器自动操作电脑

    package com.tz.util; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event. ...

  6. jQuery上定义插件并重设插件构造函数

    插件alert的全部代码,每个插件都定义在如下类似的作用域中: +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ========= ...

  7. 想通过加HINT让其走全表扫描

    一个SQL,通过SPM固定它的执行计划,可以通过DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE实现.也可以通地此功能在不修改原SQL的情况下对其加HINT来固定执行计划.D ...

  8. BizTalk开发系列(六) BizTalk开发简述

    现在很多大型企业信息化程度很高,运行中的系统可达到数十乃至上百个.而大部分系统由于建设的时间.开发团队和技术 往往不相同,系统之间的大部分都是独立运行的.随着信息化建设的深入各系统之间的交互需求越来越 ...

  9. 10/12 study

    [患者版]加号选择页: 这是四个TableView放在Scrollview上 上面是个xib封装的view 整体就是个scrollView,用xib摆上去的控件:   上面加了黄条,旧的控件统一修改y ...

  10. 关于队列queue

    1.在多线程和多进程中都有queue.调用方式不同,使用方式一致: 线程中: import queue q = queue.Queue(maxsize = 2) 进程中: from multiproc ...