1、取工作表名公式=RIGHT(CELL(\"filename\1))) 前提,文件要存盘。
或者定义名称shtname=right(get.document(1),LEN(get.document(1))-FIND(\"]\然后A1输入=shtname
2、把一张表里所有公式的引用在相对引用和绝对引用间切换右击工作表标签——查看代码——粘贴——运行 Sub 相TO绝() Dim c As Range
For Each c In Cells.SpecialCells(xlCellTypeFormulas)
c.Formula = Application.ConvertFormula(c.Formula, xlA1, , xlAbsolute) Next End Sub Sub绝TO相() Dim c As Range
For Each c In Cells.SpecialCells(xlCellTypeFormulas)
c.Formula = Application.ConvertFormula(c.Formula, xlA1, , xlRelative, c) Next End Sub
没有考虑数组公式,需要的话加判断 3、Sub 列表名()
For I = 1 To Sheets.CountCells(I, 1) = Sheets(I).Name Next End Sub
4、Sub 清除单元格内容()
Worksheets(1).UsedRange.SelectCells.Value = \"\"End Sub 5、建立分类下拉列表填充项
我们常常要将企业的名称输入到表格中,为了保持名称的一致性,利用“数据有效性”功能建了一个分类下拉列表填充项。
1.在Sheet2中,将企业名称按类别(如“工业企业”、“商业企业”、“个体企业”等)分别输入不同列中,建立一个企业名称数据库。
2.选中A列(“工业企业”名称所在列),在“名称”栏内,输入“工业企业”字符后,按“回车”键进行确认。
仿照上面的操作,将B、C„„列分别命名为“商业企业”、“个体企业”„„
3.切换到Sheet1中,选中需要输入“企业类别”的列(如C列),执行“数据→有效性”命令,打开“数据有效性”对话框。在“设置”标签中,单击“允许”右侧的下拉按钮,选中“序列”选项,在下面的“来源”方框中,输入“工业企业”,“商业企业”,“个体企业”„„序列(各元素之间用英文逗号隔开),确定退出。
再选中需要输入企业名称的列(如D列),再打开“数据有效性”对话框,选中“序列”选项后,在“来源”方框中输入公式:=INDIRECT(C1),确定退出。
4.选中C列任意单元格(如C4),单击右侧下拉按钮,选择相应的“企业类别”填入单元格中。然后选中该单元格对应的D列单元格(如D4),单击下拉按钮,即可从相应类别的企业名称列表中选择需要的企业名称填入该单元格中。
提示:在以后打印报表时,如果不需要打印“企业类别”列,可以选中该列,右击鼠标,选“隐藏”选项,将该列隐藏起来即可。
6、用“视面管理器”保存多个打印页面
有的工作表,经常需要打印其中不同的区域,用“视面管理器”吧。
1.打开需要打印的工作表,用鼠标在不需要打印的行(或列)标上拖拉,选中它们再右击鼠标,在随后出现的快捷菜单中,选“隐藏”选项,将不需要打印的行(或列)隐藏起来。
2.执行“视图→视面管理器”命令,打开“视面管理器”对话框,单击“添加”按钮,弹出“添加视面”对话框,输入一个名称(如“上报表”)后,单击“确定”按钮。
3.将隐藏的行(或列)显示出来,并重复上述操作,“添加”好其它的打印视面。
4.以后需要打印某种表格时,打开“视面管理器”,选中需要打印的表格名称,单击“显示”按钮,工作表即刻按事先设定好的界面显示出来,简单设置、排版一下,按下工具栏上的“打印”按钮,一切就OK了。
7、Sub 展开透视表明细() Dim i%
For i = 5 To 803 Sheets(\"透视\").Select
Cells(i, 2).Select
Selection.ShowDetail = True
Worksheets(i - 4).Name = Sheets(\"透视\").Cells(i, 1).Value Next End Sub
8、Sub 复制粘贴成位图()
Worksheets(\"sheet1\").Range(\"A1:D4\").CopyPicture xlScreen, xlBitmapWorksheets(\"sheet1\").Paste Destination:=Worksheets(\"sheet1\").Range(\"E6\") End Sub
将工作表 Sheet1 上 A1:D4 单元格的屏幕图像复制到剪贴板,并将其位图粘贴到工作表 Sheet1 上的另一位置。
9、如何在VAB中使用函数 SUB 使用函数()
Sheets(“sheet1”).range(“a21”).value=application.worksheetfuntion.sum(range(“a1:a20”)) End sub
在VBA不直接支持在EXCEL工作表中的一些函数,如果要调用就必须加上Application.WorksheetFunctionSUM求和语法和工作表中的一样,但表示不能直接SUM(A1:A20),要用VBA的表示方法 SUM(Range(\"a1:a20\"))
10、求A列非空行数,整列A用代码怎么表示下面两种都可以 Range(\"B1\").Value =application.worksheetfuntion .CountA(Columns(1)) Range(\"B2\").Value =application.worksheetfuntion .CountA(Range(\"A:A\")) 11、对A列所有的数据都求和: Sub 矩形2_单击() Dim i As Integer Dim YYY As Integer For i = 1 To 20
Sheets(\"sheet1\").Cells(i, 1) = i Next
YYY = Application.WorksheetFunction.CountA(Columns(\"A\"))
Cells(YYY + 1, 1) = Application.WorksheetFunction.Sum(Range(Cells(1, 1), Cells(YYY, 1)))
End Sub
在本例中是增加了个整数变量YYY,为什么要命名它为整数,是因为单元格个数是以整数表示的,没有听说过第1.2个单元格吧把A列的非空单元格个数赋给YYY,然后在后面的程序就是以调用它了 Sum(Range(Cells(1, 1), Cells(YYY, 1))) 是变动的单元格求和 RANGE(CELLS(),CELLS())是表示一个区域 比如Range(cells(1,1),cells(20,1))和Range(\"a1:a20\")是一样的,为什么要这样表示是因为CELLS表示单元格时可以加入变量 12、点中鼠标纵横变色 Private
Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Cells.Interior.ColorIndex = 0Target.Entire Row.Interior.ColorIndex = 15Target.Entire Column.Interior.ColorIndex = 15 End Sub
13、大小写转换
=TEXT(G35*100,\"[dbnum2]0 亿 0 千 0 百 0 拾 0 万 0 千 0 百 0 拾 0 元 0 角 0 分\") 14、sub 加空格() Dim i%
Dim mymoney As String Dim spmoney As String mymoney = [h35].Value For i = 1 To Len(mymoney)
spmoney = spmoney & Mid(mymoney, i, 1) & \" \" ActiveCell.Offset(1, 0).Value = spmoney Next End Sub
15、单元格表示方法 1、选取一个单元格: Range(\"A1\").Select Range(\"A\" & 1).Select [A1].Select
Cells(1).Select Cells(1, 1).Select Cells(1, \"A\").Select 2、选取连续单元格: Range(\"a1:b10\").Select [a1:b10].Select
Range(\"a1\\"b10\").Select
Range(Cells(1, 1), Cells(10, 2)).Select 3、选取不连续单元格: Range(\"a1,b2,c3\").Select [a1,b2,c3].Select
Union(Range(\"a1\"), Range(\"b2\"), Range(\"c3\")).Select Union(Cells(1, 1), Cells(2, 2), Cells(3, 3)).Select 4、选取行: Range(\"1:1\").Select Rows(\"1:1\").Select Rows(1).Select Range(\"2:10\").Select Rows(\"2:10\").Select Range(\"1:1,3:5\").Select 5、选取列: Range(\"A:A\").Select Columns(\"A:A\").Select Columns(1).Select Range(\"A:F\").Select Columns(\"A:F\").Select Range(\"A:B,D:F\").Select 6、选取所有单元格:
cells.select7、顶点单元格选取:
Range(\"A65536\").End(xlUp).Select A列最后一个非空单元格
Range(\"A1\").End(xlDown).Select A列第一个非空单元格
Range(\"A1\").End(xlToRight).Select 第一行最左一个非空单元格Range(\"IV1\").End(xlToLeft).Select 第一行最右一个非空单元格
8、特殊单元格的选取 Range(\"IH1:IK12\").SpecialCells(xlCellTypeBlanks).Select 空白单元格选取 16、单元格属性 1、 value和Formula sub text1()
Range(“A1”).Value=”1000” End sub sub text2()
Range(“A1”) .Formula=”1000” End sub
运行结果都是在A1中输入100,且都可以省略为:Range(“A1”).=”1000” sub text2()
Range(“A1”).Value=”=B2*100” End sub sub text4()
Range(“A1”). Formula=” =B2*100” End sub
运行结果都是在A1中输入公式=B2*100,且都可以省略为:Range(“A1”).=”1000”
如果A1中为公式=B1*10000,B1=2则 sub text5()
Range(“A2”) = Range(“a1”).Value End sub
在A2中的结果是20000 sub text6()
Range(“A2”) = Range(“a1”).Formula End sub
在A2中的结果是:=B1*10000
总结:Value返回的是我们平时在单元格中看到的值,而非公式。而Formula返回的和编辑栏中看到的内容一致,即,如果是值即返回值。如果是公式则返回公式。
再看下面一例: 如果A1值是0.001 sub text6()
Msgbox [A1].Value 显示结果是 .001 End sub sub text7()
Msgbox [A1].Formula 显示结果是 0.001 End sub
总结:当单元格的内容输入到对话框显示或输入到窗体文本框中且单元格的值时,.Value会省略小数点前的0,而.Formula 会全部显示。1、 Address属性: 返回指定单元格的地址
Address(行是否绝对,列是否绝对) 例: Sub text8 ()
MsgBox Range(\"A1\").Address(1, 1) 返回值为$A$1 MsgBox Range(\"A1\").Address(0,1) 返回值为A$1 MsgBox Range(\"A1\").Address(1, 0) 返回值为$A1 MsgBox Range(\"A1\").Address(0, 0) 返回值为$A$1 End Sub 注:
1、省略参数时默认为Address(1, 1)
2、Address(1, 1) 也可以是Address(True, true)
Sub text8 ()
ActiveCell.Formula = \"=\" & ActiveCell.Offset(0, -1).Address & \" * 1000\" End Sub
运行的结果是在选定单元格输入公式=左侧单元格*1000
注:Activecell 是当前活动单元格
Offset(0, -1) 是当前活动单元格向左移动一个位置的单元格
单元格也有一个Range和Cells属性。它代表什么呢? 例:如果给定一个区域。要求返回区域的第一个单元格。
SUB 第一个单元格 ()
msgbox selection.range(\"a1\").address '显示正在选定的(selection)单元格区域的第一个单元格 msgbox range(\"b2:d10\").range(\"a1\").address '显示正在选定的单元格区域的第一个单元格:B2 msgbox range(\"b2:d10\").cells(1,1).address '显示正在选定的单元格区域的第一个单元格:B2 msgbox range(\"b2:d10\").cells(1).address '显示正在选定的单元格区域的第一个单元格:B2 msgbox range(\"b2:d10\").cells(1,2).address '结果是C2 End Sub
总结:Range(\"单元格区域\").cells(行数,列数)或Range(\"单元格区域\").range(\"单元格地址\"),是以Range(\"单元格区域\")中的单元格区域定位为新的坐标。Range(\"a1\")即为新坐标系下的第一个单元格。 整型:% 长整:& 单精:! 双精:# 货币:@ 字符:$
WWW. EXCELHOME.NET
因篇幅问题不能全部显示,请点此查看更多更全内容