第一章 走进Excel VBA的世界

概述:

《别怕,ExcelVBA其实很简单》学习

默认采用Excel 2007

1、什么是宏?

宏就是录制你的行为,重复使用和回放。

2、用宏录下Excel操作

默认情况下你可能没有开放工具选项卡,需要设置



录制一个简单隔行填色:

步骤一:创建一个宏   (注意快捷键不要覆盖常用的快捷键,例如Ctrl+C, Ctrl+A,Ctrl+V 等等)


步骤二:录制你的行为。(必须要达到这个效果)


步骤三:使用宏

(首先你可以取消这个样式或者删除这两行)执行宏将会看到预期的效果

方式1:快捷键Ctrl+w(你设置的快捷键)

方式2:



那么问题来了,那天忘记快捷键,怎么办?给你弄个按钮吧


下一步


当然你可以右键修改按钮的文本信息来告诉我们这是干啥用的按钮

3、开启宏

Excel为了保护文档会禁止开启宏,所以需要自己进行设置开启


4、思考宏(是时候亮相VBA)

心里想宏也不过如此,只能做重复死工作,一点智能没有。VBA(Visual Basic For Application)可以更加灵活完成工作,例如:填充100行,隔行填充不同颜色,难道还要手工输入吗?这。。有点不人道了。。。,坚信既然是机器的活,让它自己去做。

其实在录制宏过程中生成VBA代码了,现在我们修改代码来完成目的,填充100行,隔行填充



修改前的代码

Sub 第一个宏()
'
' 第一个宏 Macro
' 隔行换色
'
' 快捷键: Ctrl+w
'修改前的代码
'
    Rows("1:1").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Rows("2:2").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
End Sub

改过之后的代码:

Sub 第一个宏()
'
' 第一个宏 Macro
' 隔行换色
'
' 快捷键: Ctrl+w
'修改后代码
'
Dim i As Long   '声明一个变量为i
For i = 1 To 100  '从 1到100循环
    If i Mod 2 = 0 Then    'i 对2取模,也就是余数是多少
    Rows("" & i & ":" & i & "").Select '选择Excel对应行,这个行是一个变量,用&进行连接最后格式如"2:2"
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Else
    Rows("" & i & ":" & i & "").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If  'If  End If注意成对出现
  Next    'For Next注意成对出现
End Sub

执行结果:(ctrl+w 刚才我设置的)


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目中想实现excel图表但POI不支持所以想到了这个方法。放上来抛砖引玉,感兴趣的欢迎大家交流 注:-------------------------------------------------------------------------- 其实现原理和利用JavaScript实现客户端绘图完全一样。后台代码将输入 写入特定区域,前端脚本在页面载入时执行脚本绘图。大家都是做B/S开发 的,这方面的只是不需要我多说了吧。 如果我们让一个HTML页面在载入时显示一个提示框用后台编程是不现实的 所以我们就动态生成一段JS: window.onload=function(){ ...... } 用Java输出图表的场景和这个一样,POI、JXL对操作Excel图表无能为力 但Excel支持脚本的,也有工作表载入事件,所以也可以用同样的原理实现 只不过这次客户端不再是浏览器而是Excel应用程序。 这样交代的应该比较明白了吧,请不要再留言抱怨没有Java代码了,因为 这根本跟java代码没多大关系,后台的代码所做的工作仅仅是写入必要的 数据,数据的解析和绘图操作是在VBA中完成的 ---2009-12-18 今天查找资料翻出来了这段代码,发现里边的类确实是空的,我说怎么总挨骂 呢,当时肯定打包的时候晕透了把另一个本该删除的类打包进去了。我无法 替换文件只能把java代码贴上来了,请自己修改模板文件的路径。 package com.test.poi; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class PoiChart { public static void main(String[] args){ try{ POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("E:/王建波_bak/我的练习/Module.xls")); HSSFWorkbook wb=new HSSFWorkbook(fs); HSSFSheet sheet=wb.getSheetAt(0); HSSFRow row; //写入表头 String[] aTblHeaders=new String[]{ "姓名","语文","数学","英语" }; row=sheet.createRow(0); for(int i=0,len=aTblHeaders.length;i<len;i++){ row.createCell((short)i).setCellValue(aTblHeaders[i]); } //向模板中写入数据 String[] aNames=new String[]{ "张飞","刘备","关羽","曹操","孙权","吕布" }; for(int i=0,nRowLen=aNames.length;i<nRowLen;i++){ row=sheet.createRow(i+1); row.createCell((short)0).setCellValue(aNames[i]); for(int j=1,nColLen=aTblHeaders.length;j<nColLen;j++){ row.createCell((short)j).setCellValue(Math.floor(Math.random()*100)); } } //输出文件 FileOutputStream fout=new FileOutputStream("d:/chart.xls"); wb.write(fout); fout.close(); }catch(Exception e){ e.printStackTrace(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值