友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

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

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!





     v = Int((5 * Rnd) + 1)   



     Cells(i; 1) = v   



     Next   



     End Sub   



     解答 3:是这样的:我有无数的随机数,是由 rand()产生的,(这是以前输的,我不想 



去重输这么多)这是前提。   



     当我获得一组合适的值的时候,我就在 A1 格内输入 1,从而使随机数固定在那组满意的 



值。下一组时,我在 A1 格输入 0。就是这样。  



     解答 4:可不可以把满意的那组贴成数值到新表?当然是用 vba 来实现的。   



     Sub g()   



     Sheets(1)。UsedRange。Copy   



     Worksheets。Add after:=Worksheets(Worksheets。Count)   



     Sheets(Worksheets。Count)。Cells(1; 1)。Select   



     Selection。PasteSpecial Paste:=xlvalues   



     Sheets(1)。Cells(1; 1) = 1   



     End Sub   



     解答 5:   



     Private Sub mandButton1_Click()   



     Dim a; b As Integer   



     For a = 1 To 2 '产生第一次随机数   



     For b = 1 To 3   



     Cells(a; b) = Int((8 * Rnd) + 1)   



                                                                                          405  


…………………………………………………………Page 406……………………………………………………………

                                                 



Next b   



Next a   



Dim c As Integer   



For c = 1 To 10 ’询问是否对随机数满意   



If (MsgBox(〃did u think the random are ok?〃; 260)) = vbYes Then   



Cells(3; 1) = 1 '如果需要一个 0 或 1 的单元格给其它程序块使用   



Exit Sub '满意就退出   



Else '不满意就继续产生随机数   



For a = 1 To 2   



For b = 1 To 3   



Cells(a; b) = Int((8 * Rnd) + 1)   



Next b   



Next a   



Cells(3; 1) = 0   



End If   



Next c   



MsgBox 〃if u want to continue rondom number press cmd1 again please〃   



End Sub  



解答 6 简化一下:  



Sub test()  



Upper = 0  



Bottom = 100  



Do While Range(〃A1〃)  1  



Range(〃E1〃) = Int(Rnd() * (Upper Bottom + 1)) + Bottom  



Response = MsgBox(〃Do you accept the number?〃; vbYesNo + vbDefaultButton2)  



If Response = vbYes Then Range(〃A1〃) = 1  



Loop  



End Sub  



                                                                                          406  


…………………………………………………………Page 407……………………………………………………………

                                                                           



                                                                  排列组合  



比如现在有一个 长度是 9 位的字符串 (ABCDEFGHI),想列出全部的只取其中 7个字符的组合值:  

CDEFGHI、ADEFGHI、ABEFGHI、ABCFGHI、ABCDGHI、〃〃、共 36 个。用函数或 VBA 均可。  

解答:Sub bination()  

    Dim a; b; c; d; e; f; g; h;  i; j; k As  Integer  

    Dim str As String  

    j=1  

    For a = 0 To  1  

        For b = 0 To 2 Step 2  

            For c = 0 To 3 Step 3  

                For d = 0 To 4 Step 4  

                    For e = 0 To 5 Step 5  

                        For f = 0 To 6 Step 6  

                            For g = 0 To 7 Step 7  

                                For h = 0 To 8 Step 8  

                                    For  i = 0 To 9 Step 9  

                                        k = a /  1 + b / 2 + c / 3 + d / 4 + e / 5 + f / 6 + g / 7 + h / 8 +  i / 9  

                                         If k = 7 Then  

                                            str = 〃〃  

                                             If a  0 Then str = str & 〃A〃  

                                             If b  0 Then str = str & 〃B〃  

                                             If c  0 Then str = str & 〃C〃  

                                             If d  0 Then str = str & 〃D〃  

                                             If e  0 Then str = str & 〃E〃  

                                             If f  0 Then str = str & 〃F〃  

                                             If g  0 Then str = str & 〃G〃  

                                             If h  0 Then str = str & 〃H〃  

                                             If  i  0 Then str = str & 〃I〃  

                                            cells(j;1)=str  

                                            j=j+1  

                                        End  If  

                                    Next  i  

                                Next h  

                            Next g  

                        Next f  

                    Next e  

                Next d  

            Next c  

        Next b  

    Next a  

End Sub   

如用 MID 函数,修改一下以上程序可得到任意长度为 9 的字符串的任取 7 个字符的组合。  

解答 2:用公式的解:  



                                                                                                                                       407  


…………………………………………………………Page 408……………………………………………………………

                                                      



=REPLACE(REPLACE(M1;MIN(IF(ROW() 4 Then   

。Value = 〃〃   

GoTo ex   

End If   

If Trim(Target) = 〃〃 Then   

If Trim(。Offset(1; 0)) = 〃〃 Then   

If 。Row = 5 Then   

。Offset(…1; 0) = 〃〃   

ElseIf 。Row 》 5 Then   

。Offset(…1; 0) = 〃=SUM(〃 & 。Offset(…1; 0)。End(xlUp)。Address(False; False; xlA1) & 〃:〃  

& 。Offset(…2; 0)。Address(False; False; xlA1) & 〃)〃   

End If   

End If   

If 。Offset(1; 0)。HasFormula And 。Row = 4 Then 。Offset(1; 0) = 〃〃   

If Trim(。Offset(1; 0))  〃〃 Then   

。Delete Shift:=xlUp   

Cells(1; ActiveCell。Column) = Cells(1; ActiveCell。Column) 1   

End If   

ElseIf Trim(。Offset(1; 0)) = 〃〃 Or 。Offset(1; 0)。HasFormula Then   

。Offset(1; 0) = 〃=SUM(〃 & 。End(xlUp)。Address(False; False; xlA1) & 〃:〃  

& 。Address(False; False; xlA1) & 〃)〃   

Cells(1; 。Column) = Cells(1; 。Column) + 1   

End If   

End With   

ex:   

Application。EnableEvents = True   

End Sub   

Private Sub Worksheet_SelectionChange(ByVal Target As Range)   

With Target   

If 。Rows。Count 》 1 Or 。Columns。Count 》 1 Then ActiveCell。Select   

If 。Row 《 3 And 。Column 《 5 Then Cells(4; ActiveCell。Column)。Select   



                                                                                                408  


…………………………………………………………Page 409……………………………………………………………

                                                   



End With   

End Sub   

以上代码是按我理想的做的。   

主要部分:   

If Trim(。Offset(1; 0)) = 〃〃 Or 。Offset(1; 0)。HasFormula Then   

。Offset(1; 0) = 〃=SUM(〃 & 。End(xlUp)。Address(False; False; xlA1) & 〃:〃  

& 。Address(False; False; xlA1) & 〃)〃   

Cells(1; 。Column) = Cells(1; 。Column) + 1   

End If   

没有注释,将就看吧!   

dick 小修改。。。   

Private Sub Worksheet_Change(ByVal Target As Range)   

Application。EnableEvents = False '触发设 False   

R = Target。Row   

C = Target。Column   

A = Range(〃A65536〃)。End(xlUp)。Offset(0)。Row '最后一笔   

If C = 1 Then '最后一笔   

If R = A Then   

ALL = Application。WorksheetFunction。Sum(Range(Cells(1; 1); Cells(R; 1))) 'sum   

Target。Offset(1) = ALL '最后一笔+1;放 sum 值   

Else   

ALL = Application。WorksheetFunction。Sum(Range(Cells(1; 1); Cells(A 1; 1))) 'sum   

Cells(A; 1) = ALL '更动;重新计算   

End If   

End If   

Application。EnableEvents = True ''触发设 True   

End Sub   

更正   

If C = 1 Then 'A 栏   

If R = A Then '最后一笔   

tof   

翻阅了一些书;知道 VBA 向单元格输入公式是以文本格式输入的。   

受到启发只要使用 RC 形式;将移动数字作为变量; 连接文本输入就可以达到目的了;   

现使用循环激活达到〃〃的单元格的行   

I2 = 2   

LINE3:   

If Cells(I2; h) = 〃〃 Then   

Else   

I2 = I2 + 1   

GoTo LINE3:   

End If   

Cells(I2; h + 1)。Formula = 〃=SUM(R'〃 & I2 & 〃'C:R'…1'C)〃   



                                                                                          409  


…………………………………………………………Page 410……………………………………………………………

                                                  



                                    关于使用 VBA 复制的问题  



问题:我有一个表格,如何将其原封不动的在同一表单如 SHEET1 中复制多份,要求它们完全一 

样。我用宏录制完后,总是对最后选定的单元格进行修改,很不方便。   

如 A1:C6 是一个小表,我在 A7 位置按快捷键生成一张,到 A15 按快捷键又生成一张,而不必 

在宏中将 A7 改为 A15。   

解答: ACCESS   

建立下面宏时,先建立一快捷键   

Sub cy()   

Sheets(〃sheet1〃)。Range(〃A1:C6〃)。Copy   

ActiveSheet。Paste   

Range(〃A1〃)。Select   

End Sub   

解答 2:这种方法单元格被锁定,不能实际任意位置的的粘贴,好像不行! ACCESS   

Sub cy()   

Sheets(〃sheet1〃)。select   

ActiveSheet。Unprotect   

Range(〃A1:C6〃)。Copy   

ActiveSheet。Paste   

ActiveSheet。Protect   

Range(〃A1〃)。Select   

End Sub   

解答 4dick:工作页名称上方按右键》》检视程序代码》》程序 COPY 贴上   

任何单元格快按 2 下;即 COPY 完成   

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

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range; Cancel As Boolean)   

R = Target。Row   

C = Target。Column   

Range(〃A1:C4〃)。Select   

Selection。Copy   

Cells(R; C)。Select   

ActiveSheet。Paste   

End Sub   

解答 5Rowen:'在 DICK 代码基础上的改进   

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range; Cancel As Boolean)   

R = Target。Row   

C = Target。Column   

'A1:C4'。Copy (Cells(R; C))   

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〃
返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!