目前只接触了表格宏
包括建立子表,自定义函数,公式之类的,还有一些宏录制实现不了的功能。
function 工作表练习()
{
// for(var i=10;i>=1;i--)
// {
// var a=Sheets.Add(null,Sheets("Sheet1"))
// a.Name=i;//子表名字
a.Range("b3").Value2=66;//写入数值
// }
// Sheets.Add(undefined, Sheets("Sheet1"), 10, undefined);//后面新增子表
// Sheets.Item("Sheet59").Activate();//更改子表格名字
// ActiveSheet.Name = "表格";
//Sheets.Item("Sheet64").Activate();//子表删除
// ActiveWindow.SelectedSheets.Delete();
//for (var i=1;i<=Sheets.Count;i++)//删除I其他子表
//{
// if(Sheets(i).Name!="Sheet1")
// {
// Sheets(i).Delete(true);//参数的意思:忽略内容提示,直接删除
// }
//}
}
function 单元格赋值()
{
var a=Range("A1:C5");
a.Formula = "123";
a.HorizontalAlignment = xlHAlignCenter;//水平居中
Range('b4').Formula='666';
}
function 单元格颜色()
{
for(var s of Range('a1:c5'))
{
if(s.Value2==666)
{
s.Interior.Color=255;
}
Range('d20').Font.Color=255//字体颜色
Range('c3:c5').Interior.ThemeColor=9;
// Range('b2:c4').Clear();//清除区域全部内容
}
}
function 拷贝区域()
{
Range('a1:c5').Copy(Range('e10'));
Range('a1:c5').Copy(Sheets('Sheet188').Range('e10'));
}
function 位移()
{
Range('a1:c4').Offset(20,7).Value2=Range('a1:c4').Value2;
var m=55
Range('a1:c4').Offset(25,7).Value2=m
}
function 清除选中区域内容快捷()
{
Selection.Clear();
}
function 切换子表赋值()
{
Sheets.Item(2).Range('e'+6).Value2=Date();
Sheets.Item('Sheet188').Range('f14').Value2='天元'
}
function 窗口输出时间()
{
alert('此时此刻:'+Date())
}
function 查找值()//find 顺序查找到一个值后即返回
{
for (var i=0;i<=10;i++)
{
var m=10+i
Range('b'+m).Value2=2*i
}
Range("b10:b20").Find(16).Interior.Color=255
Range('b10:b20').Find(18).Offset(0,2).Value2='我前面两格是18'//offset函数参数(行,列)
Range('b10:b20').Find(12).Offset(0,-1).Value2='我后面是12'
}
function fight()
{
if (typeof(Range('b15').Value2!=Number))
{
Range('b15').Value2=0
}
Range('b15').Value2+=1.5
Range('b15').Offset(-1,2).Value2='白班次数'
Range('b15').Offset(0,2).Value2++
if(Range('b15').Value2==1.5)
{
Range('b15').Offset(0,2).Value2=1
}
}
function 当前选中单元格()
{
Selection.Value2='bingo!!!'
}
function 值类型(r)
{
var a=typeof(r.Value2)
return a
}
function 自定义函数()//先创建数据表,结合下一个函数做示范
{
Range("A34").Select();
Selection.Formula = "张三";
Range("A33").Select();
Selection.Formula = "姓名";
Range("A35").Select();
Selection.Formula = "李四";
Range("A36").Select();
Selection.Formula = "王麻子1";
Selection.AutoFill(Range("A36:A41"), xlFillDefault);
Range("A36:A41").Select();
Range("B33").Select();
Selection.Formula = "工资";
Range("B34").Select();
Selection.Formula = "5000元";
Selection.AutoFill(Range("B34:B41"), xlFillDefault);
Range("B34:B41").Select();
Range("B42").Select();//创建数据表
}
function 求和(R)
{
var sum=0
for(var a of R)
{
if(typeof(a.Value2)=='number')//无单位数值类型
{
a=String(a.Value2)//转为字符串类型
var n=[...a]
}
else if(typeof(a.Value2)=='undefined')//未定义类型
{
var n='0'
}
else
{
var n=[...a.Value2]//默认为字符串类型(带单位数值)
}
var s=''
for(var i=0;i<n.length;i++)
{
if(n[i]>-1)//取出字符串中的数值
{
s+=n[i]
}
}
sum+=Number(s)
}
return sum+'rmb'
}
function 合并单元格()
{
Range('f1:g1').Merge(false)//合并
}
function 查找()
{
Cells.Find('订单产品数量').Offset(1,0).Formula='产品一'//全表查找数据(第一个数据)并在附近赋值
// Cells.Find('订单产品数量').Offset(1,1).Offset(0,-1).Formula='产品数量'//合并单元格附近查找doge
}
function 准备开始()//带参数的公式
{
Columns.Item("A:A").Select();
Range("A2").Activate();
Columns.Item("B:C").Insert(-4159, undefined);
Columns.Item("B:C").Select();
Range("A1").Activate();
Range('b2').Formula='白班(个)'
Range('c2').Formula='晚班(个)'
Range('g3:h21').Formula=''
Range('j3:j21').Formula=''
for(var i=3;i<=21;i++)//绕了半天,终于把自定义公式做出来了,确实很丑,哈哈
{
var m='B'+i
var n='C'+i
var x=m+'*2+'+n+'*3.5'
Range('D'+i).Formula='='+x
}
}
一些事件响应
//新建(激活)工作表响应
function Application_SheetActivate(Sh)
{
MsgBox("您激活了工作表:"+Sh.Name)
}
//新建工作簿响应
function Application_NewWorkbook(Wb)
{
MsgBox("您新建了工作簿:"+Wb.Name)
}
//删除任意工作表
function Application_SheetBeforeDelete(Sh)
{
MsgBox("您即将删除工作表:"+Sh.Name)
}
//双击响应
//function Application_SheetBeforeDoubleClick(Sh, rg, cancel)
//{
// if (Target.Address() == "$A$1")
// Cancel.Value = true;
//}
//右击响应
//function Application_SheetBeforeRightClick(Sh, rg, cancel)
//{
// if (Target.Address() == "$A$1")
// Cancel.Value = true;
//}
//工作表计算响应
//function Application_SheetCalculate(Sh)
//{
// MsgBox("工作表正在计算:"+Sh.Name)
//}
//修改响应
//function Application_SheetChange(Sh, rg)
//{
// MsgBox("工作表:" + Sh.Name + "。区域:"+Target.Address() + "。发生了修改")
//}
//窗口大小改变
//function Application_WindowResize(Wb, Wn)
// { MsgBox(
// "窗口\""+ Wn.Caption + "\"大小发生了改变。") }
//工作簿保存触发事件
function Application_WorkbookAfterSave(Wb, Success)
{
if (Success)
{
MsgBox("文档被成功保存!")
}
}
//工作簿关闭触发事件
function Application_WorkbookBeforeClose(Wb, Cancel)
{
var ret = MsgBox("工作簿:"+ Wb.Name+"正在关闭。是否取消?", jsYesNo);
if (ret == jsResultYes)
Cancel.Value = true;
}
//工作簿打印触发事件
function Application_WorkbookBeforePrint(Wb, Cancel)
{
var ret = MsgBox("工作簿:"+ Wb.Name+"即将打印。是否取消?", jsYesNo);
if (ret == jsResultYes)
Cancel.Value = true;
}