八宝书库 > 文学其他电子书 > Excel word ppt office使用技巧大全(DOC格式) >

第77部分

Excel word ppt office使用技巧大全(DOC格式)-第77部分


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




End Sub  



                      文件保存为以某一单元格中的值为文件名的宏怎么写  



用命令: ActiveWorkbook。SaveCopyAs Str(Range(〃Sheet1!A1〃)) + 〃。xls〃  



                                                                                         410  


…………………………………………………………Page 411……………………………………………………………

                                                 



                                       自动处理某种格式  



Q: 请问有什么方法可以把相关列的内容自动形成一种格式?如:   

日期 商品 金额/1…1 A材料 50 /1…1 B材料 40 /1…2 C 材料 70/1…2 A 材料 34/1…3 C 材料 99 。 

上述的表格中,“商品”与“金额”是相关系的,请问有什么方法,使当商品是 A 材料时、它 

自动填充上蓝色和成为白色字,“金额”字段也自动作相应的填充上蓝色和是白色字?   

即:   

A B C   

1 日期 商品 金额 /2 1…1 A 材料 50  (蓝底、白字)/3 1…1 B 材料 40 /4 1…2 C 材料 70  (黄 

底、红字) /5 1…2 A 材料 34  (蓝底、白字) /6 1…3 C 材料 99  (黄底、红字) /使用“条 

件格式”做不到,如用“排序”方法先选出再填充颜色等又会影响其它字段的计算,因而请教 

各位是否有什么方法(例如宏)等可设定自动处理上述问题?先谢谢。   

A: wildgoose   

我可以提供一份变通的办法:你可以插入三列,一列用来用来存放你的材料名称,一列放 1、 

2、3。。。数字,然后在第三列中用 vlookup 函数取出对应材料名称的数字。后使用 条件格式 , 

通过判断 1、2、3。。。 就可以了   

A:dick   

Private Sub Worksheet_Change(ByVal Target As Range)   

X = ActiveCell。Row() ' 目前位置   

Y = ActiveCell。Column()   

L = 'b65535'。End(xlUp)。Row() '计算共有几笔   

For I = 0 To L 2   

A = 'b65535'。End(xlUp)。Offset(…I; 0) '   

  

Select Case A   

Case 〃A 材料〃   

'b65535'。End(xlUp)。Offset(…I; 0)。Select 'B   

Selection。Font。ColorIndex = 2   

Selection。Interior。ColorIndex = 5   

'b65535'。End(xlUp)。Offset(…I; 1)。Select 'A   

Selection。Font。ColorIndex = 2   

Selection。Interior。ColorIndex = 5   

'b65535'。End(xlUp)。Offset(…I; …1)。Select 'C   

Selection。Font。ColorIndex = 2   

Selection。Interior。ColorIndex = 5   

Case 〃B 材料〃   

  

Case 〃C 材料〃   

'b65535'。End(xlUp)。Offset(…I; 0)。Select   

Selection。Font。ColorIndex = 3   

Selection。Interior。ColorIndex = 6   

'b65535'。End(xlUp)。Offset(…I; 1)。Select   

Selection。Font。ColorIndex = 3   

Selection。Interior。ColorIndex = 6   



                                                                                       411  


…………………………………………………………Page 412……………………………………………………………

                                                   



'b65535'。End(xlUp)。Offset(…I; …1)。Select   

Selection。Font。ColorIndex = 3   

Selection。Interior。ColorIndex = 6   

End Select   

Next I   

Cells(X; Y)。Select '动作前单元格   

End Sub   

  

A:Rowen   

选中 B2…》格式…》条件格式…》公式…》=(LEFT(B2;1)=〃A〃)…》设定字体及图案。添加公式…》类 

推。。。用格式刷填充到所需单元格。条件格式最多可设定三个;多过请用 VBA 实现   



                            在 VBA 的FRM 窗口右上方的“X”如果去掉  



Q:问题一:关于加密窗口的问题!上次请教了一个关闭 EXCEL 函数的问题!现在又发现一个问 

题:即在 VBA 的FRM 窗口右上方的“X”如果去掉?因为它关闭了我的加密窗口就不起作用? 

或者如果按“X”的时候,自动关闭EXCEL 就行,如何?多谢!   

问题二,我每次经过加密窗口后进入工作表,总是被隐藏了,用什么函数把隐藏的自动打开? 

这样我的可以写一个宏!OK!   

A: tof   

Private Sub UserForm_QueryClose(Cancel As Integer; CloseMode As Integer)   

If CloseMode  1 Then Cancel = 1   

UserForm1。Caption = 〃The Close box won't work! Click me!〃   

End Sub   

  

dick   

Sub dd()   

For i = 1 To Worksheets。Count   

Sheets(i)。Visible = True   

Next i   

End Sub  



                                   vba  for  excel 程序纠错  



Q:我想对所有工作表进行将公式转为数值,录制宏后加上了几句但结果不对,请斧正!   

sub aa()   

dim sht as worksheet   

For Each sht In Worksheets   

ActiveSheet。Range(〃A1:C4〃)。Select   

Selection。Copy   

Selection。PasteSpecial Paste:=xlValues; Operation:=xlNone; SkipBlanks:= _   

False; Transpose:=False   

ActiveSheet。Paste   

Application。CutCopyMode = False   

Next   



                                                                                          412  


…………………………………………………………Page 413……………………………………………………………

                                                   



End Sub   

  

A: roof   

试试在 for。。。each。。。和 activesheet。。。之间加上一句“sht。activate〃。结果如下:   

sub aa()   

dim sht as worksheet   

For Each sht In Worksheets   

sht。activate   

ActiveSheet。Range(〃A1:C4〃)。Select   

Selection。Copy   

Selection。PasteSpecial Paste:=xlValues; Operation:=xlNone; SkipBlanks:= _   

False; Transpose:=False   

ActiveSheet。Paste   

Application。CutCopyMode = False   

Next   

End Sub   

excelhelp:其实录制得来的宏(macro)程序可以自行修改,以达到高效率、精简的目的。你 

的程序这样改会较容易看得懂,记着,Selection 一般可以省去,使程序一气呵成,也可以避 

免现存储存格(activecell,浮标所在地)给移动。   

Sub aa()   

  Dim Sht As Worksheet   

  For Each Sht In Worksheets   

    With Sht。Range(〃A1:C4〃)   

      。Copy   

      。PasteSpecial Paste:=xlValues; Operation:=xlNone; SkipBlanks:=False;  

Transpose:=False   

    End With   

    Application。CutCopyMode = False   

  Next   

End Sub   

虽然以上的程序可以把 A1:C4 的公式删去,但它有两个缺点:   

 1)范围只能限定为A1:C4,要是多了一个不在此范围的储存格(cell)有公式,又或是每张 

工作表(worksheet)的范围都不一样,这程序便会有问题;   

 2)在宏执行时,画面会闪动,这是Copy 和 Paste 的副作用。   

  

故此,我建议用以下程序代替:   

Sub aa2()   

  Dim wSht As Worksheet   

  Dim rCell As Range   

  For Each wSht In Worksheets   

    For Each rCell In wSht。UsedRange   

      rCell。Value = rCell。Value   

    Next   

  Next   



                                                                                           413  


…………………………………………………………Page 414……………………………………………………………

                                                     



End Sub   

这样写较简洁,也没有上述的问题。   

leaf :Sub aa()   

Dim sht as WorkSheet   

Dim rng as Range   

For Each sht In Worksheets   

    Set rng = sht。Cells   

    With rng   

        。Copy   

        。PasteSpecial Paste:=xlValues   

    End With   

    Application。CutCopyMode = False   

Next   

End Sub   



                       请问各位有什么方法可以使工作表从 1 至 50 自动排列  



Sub paixu()  

For i = 1 To Sheets。Count  

For j = i To Sheets。Count  

If Int(Sheets(i)。Name) 》 Int(Sheets(j)。Name) Then  

Sheets(j)。Move Before:=Sheets(i)  

End If  

Next j  

Next i  

End Sub   



                               如何将自动将公式的值固定在单元格  



我又有新问题了。怎么样在一定的条件下将公式转换成值固定在在单元格内?  

解答:Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object; ByVal Target As  

Excel。Range)  

With ThisWorkbook。ActiveSheet  

If Target。Column = 3 And Target。Row 》 1 Then  

If VBA。Trim(。Cells(Target。Row; 4)。Value) = 〃counting〃 Then  

Target。Value = 。Cells(Target。Row; 2) 。Cells(Target。Row; 1)  

End If  

End If  

End With  

End Sub  

将这段内容加入到 thisworkbook 模块中,在你选中要计算的单元格时,会为你自动计算,当 

然你也可以修改一下使其完全自动化。  



                                                                                             414  


…………………………………………………………Page 415……………………………………………………………

                                                



                                 输入字母转换成设定的数值  



比如,我设置第一个框的范围是(a=2。7 b=1。8 c=0。9 d=0)如果我输入c,那它能不能变成 

0。9 或者最后相加减的时候转换?  

解答:Private Sub Workbook_SheetChange(ByVal Sh As Object; ByVal Target As Range)  

If Target。Value = 〃a〃 Then  

Target。Value = 2。7  

ElseIf Target。Value = 〃b〃 Then  

Target。Value = 1。8  

ElseIf Target。Value = 〃c〃 Then  

Target。Value = 0。9  

ElseIf Target。Value = 〃d〃 Then  

Target。Value = 0  

End If  

End Sub  

或者:如果临时要用,在“工具-自动更正”里设置也可以。  



                      打开一张工作表时系统提示要求输入用户名和密码  



解答:  

If Application。InputBox(〃请输入密码:〃) = 〃〃 Then  

Sheets(〃。。。。。〃)。Visible = True  

Sheets(〃。。。。。〃)。Select  

Range(〃。。。〃)。Select  

Else: c = 〃对不起,密码不正确〃  

d = 〃 警告〃  

MsgBox prompt:=c; Title:=d  

End  

End If  



                               工具菜单与视图中的工具栏不同  



屏蔽工具菜单宏  

sub notool()  

MenuBars(xlWorksheet)。Menus(〃工具〃)。Delete  

end sub  

解除屏蔽  

sub yestool()  

MenuBars(xlWorksheet)。reset  

end sub   

Alt+F11 进入 VBA 编辑  

插入模块  

将上面宏复制到模块  

运行宏。OK  



                                                                                     415  


…………………………………………………………Page 416……………………………………………………………

                                                       



                                          限制使用某张工作表  



解答:只有在 A1 单元格内输入 12345 时,其它单元格才能输入数据。  

Private Sub Worksheet_Change(ByVal Target As Range)  

ActiveSheet。Unprotect 〃123〃  

Range(〃A1〃)。Locked = False  

ActiveSheet。Protect 〃123〃  

If Target。Address = 〃A1〃 Then  

If Cells(1; 1)。Value = 12345 Then ActiveSheet。Unprotect 〃123〃  

Else  

If Cells(1; 1)。Value = 12345 Then ActiveSheet。Unprotect 〃123〃  

End If  

End Sub  



                                    怎样建立没有右边箭头的子菜  



答:我用这样的语句建立菜单,没有子菜单。是 Wswx  教的  

Dim Menu As mandBarControl; SubMenu As mandBarControl  

Set Menu = Application。mandBars(1)。Controls。Add(msoControlPopup; ; ; ; True)  

With Menu  

。Caption = 〃工作菜单(&G)〃  

End With  

With Menu。Controls。Add(msoControlButton; 1; ; ; True)  

。Caption = 〃输入资料  (&I)〃  

。OnAction = 〃showform〃  

End With  

With Menu。Controls。Add(msoControlButton; 1; ; ; True)  

。Caption = 〃查阅资料  (&C)〃  

。OnAction = 〃pickup〃  

End With  



                         

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的