友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

Excel word ppt office使用技巧大全(DOC格式)-第130章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                                                  



End Sub  



                                  一个用 VBA 写入公式的问题  



有一个这样的问题  :统计进度以每天的日期做为文件名,如今天是2002 年 9 月 23  日,文件 

名就是 2002 年 9 月 23  日。xls  工作完成后用它另存为 2002 年 9 月 24  日。xls  明天使用2002 年 

9 月 24  日。xls 文件。    

有一个问题  如今天是 23  日今要在a9 单元格中引用昨天 2002 年 9 月 22  日。xls  中的一个数据  

公式= '2002 年9 月22 日。XLS'sheet1!a10+a7/1000  也就是昨天的一个数字加上今天的一个数据 

除以 1000  每天改公式烦死了  能不能做一个 auto_open 宏    

  '2002 年 9 月 22  日。XLS'sheet1!a10+a9/1000    

红字这段自动变成  today…1  也就是昨天的日期,    

我试了好几次没有成功  请  vba  高手指点  

解答:  

时间原因,做得很简单,你可以自己加一点 Error 语句,在运行宏之前检查昨天的文件是否存 

在等等,建议不要放在 auto_open()里,如果要必须放,要加语句检查一下宏运行的次数,不 

可重复运行。以下语句在 Excel XP 中通过检测。  

Sub auto_open()  

Dim dataToday; dateLastday As String  

dateToday = CStr(Date)  

dateLastday = CStr(Date 1)  

ChDir 〃C:”  

  

Workbooks。Add  

ActiveWorkbook。SaveAs Filename:=dateToday  

  

Cells(9; 1)。Select  

ActiveCell。FormulaR1C1 = 〃=''〃 & dateLastday & 〃。xls'Sheet1'!R9C1+''〃 & dateLastday  

& 〃。xls'Sheet1'!R10C1/1000〃  

  

End Sub   

又问:如果日期后面还有文字怎么办?    

答:dateToday=CStr(Date) & 〃(你要加的文字尽管放)〃  



                            怎么能在 excel 没打开文件的时候被禁用  



如何能让一个宏命令按钮在无文件打开状态下被禁用?  

解答:例如这个按钮在 Standard 工具列,名字叫 GO(&C),做法如下:  

在 personal 增加一个 class  

Public WithEvents App As Application  

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)  

Application。mandBars(〃Standard〃)。Controls(〃GO(&C)〃)。Enabled = True  

End Sub  

Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)  

Application。mandBars(〃Standard〃)。Controls(〃GO(&C)〃)。Enabled = False  



                                                                                        419  


…………………………………………………………Page 420……………………………………………………………

                                                           



End Sub  

再到 personal 任何 1 个 Module  

Public z As New Class1  

Sub lnitialzeApp()  

Set z。App = Application  

End Sub  



                              在已有数值的单元格中再增加或减去另一个数   



Sub MyMicro( )    

        OldValue = Val (ActiveCell。Value )    

        InputValue = InputBox (         “输入数值,负数前输入减号”;  “小小计算器”)    

        ActiveCell。Value = Val (OldValue  +  InputValue)    

    End Sub    

 问:此宏一次只能输入一个数值,如何才能一次输入多个数值(如:1+2+3。。。),另外,能否进 

行乖除运算?  

答:Inputvalue1=。。。。。    

Inputvalue2=。。。。。    

Inputvalue3=。。。。。    

。。。。。。    

ActiveCell。Value = Val (OldValue  +  InputValue1+Inputvalue2+Inputvalue3。。。)    

  

乘或除把里面的‘+ ’换成‘*’或‘/ ’即可  



                                    对 excel 里录入的数据进行关系验证  



 比如:A1 、A2 、A3 这 3 个单元格,已经输入了 3 个数字,    

现在需要验证这 3 个已经输入的数据是否满足 A1=A2+A3 的    

关系,应该如何设置呢?    

我的方法是:在一个新的单元格中输入以下公式:=if(a1=a2+a3;true;false);如果 a1=a2+a3;该单 

元格的值为 true;否则为 false  。但是这种做法会占用到该工作表的空间,而该工作表已经非常 

大了(有 1000 多行,要满足各种各样公式关系的很多),我希望能够做到跳出一个窗口告诉我 

哪些单元格不符合公式关系,相当于审核工作表的功能。  

解答:本例是依据竖向记录检验的。运行时将 x 替换成记录行数。    

Sub pd()    

Dim cw(1000) As Integer    

For i = 1 To x '…………x 为记录行数    

If Sheet1。Cells(i; 3)  Sheet1。Cells(i; 1) + Sheet1。Cells(i; 2) Then    

j = j +  1    

cw(j) = i    

End If    

Next i    

Sheets(1)。Select    

For i = 1 To j    

For k = 1 To 3    



                                                                                                          420  


…………………………………………………………Page 421……………………………………………………………

                                                      



Sheet1。Cells(cw(i); k)。Select    

Selection。Font。Bold = True    

Selection。Interior。ColorIndex = 35    

Selection。Font。ColorIndex = 3    

Next k    

Next i    

Sheets(2)。Select    

Sheets(2)。Cells(1; 1) = 〃数据数值输入错误有〃 & j & 〃处〃    

For i = 1 To j    

Sheets(2)。Cells(i + 1; 1) = 〃数据数值输入有误!!!(第〃 & cw(i) & 〃行)〃    

Next i    

End Sub  



                               如何自动跳过有公式的单元格继续输入  



可以使用 Change 事件完成  

Private Sub Worksheet_Change(ByVal Target As Range)  

If Target。Row 《 11 And Target。Column 《 3 Then  

If Target。Column = 1 Then  

Target。Offset(0; 1)。Select  

ElseIf Target。Column = 2 Then  

Target。Offset(1; …1)。Select  

Else  

Exit Sub  

End If  

End If  

End Sub  



                             查询设计“最近”“连续”“三次”〃Pass〃  



Q:字段名 5 个或更多,记录有近 8000 条。    

ID  产品编号  订单编号  供应商名称  来货结果    

1 A001 0001 3M Fail /2 A001 0002 3M Fail /3 A001 0003 3M Pass/4 A001 0004 3M Pass /5 A001  

0005 3M Pass /6 A002 0006 JVC Pass /7 A002 0007 JVC Pass /8 A002 0008 JVC Pass /9 A002  

0009 JVC Pass /〃〃〃〃按照公司进货处理,如果某一产品“最近”“连续”“三次”〃Pass〃则 

此产品以后之来货可以“免检”。订单编号由过去至现在为 0001~0013 至更大;则上例中,  请 

问,如何设计查询?    

  A:  方法 1:  

用公式分类排序(闻鸥学堂里有),只排出每类前三个,判断是否都是“Pass ”,然后。。。。会 

了?    

方法:  

1。  在 F4 输入公式    

=IF(AND(B4=B3;B4=B2;E4=〃pass〃;E3=〃pass〃;E2=〃pass〃);1;0)    

2。  在 F4 单元格右下角快按 2 下(填满公式)    

3。  将下列程序 COPY 至 VBA 中;再做个按钮(更新) 即可    



                                                                                                 421  


…………………………………………………………Page 422……………………………………………………………

                                                              



***************************    

Sub DD()    

On Er
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!