……我的地盘里有乱七八糟的东西,有偷来的,有捡来的,有自造的,不代表我的水平,觉得有用就拿去用。我是教师,如果你是同行,咱们多联系……

常用的、带解释的 VBA 短句

上一篇 / 下一篇  2006-08-28 14:05:23 / 天气: 晴朗 / 心情: 高兴 / 个人分类:……办公杂耍……

[VBA起步]常用的、带解释的 VBA 短句爱好者博墅)~*Dhv ~]:Vs
[A65536].End(xlUp).Row                            'A列末行向上第一个有值的行数
;?f H,oo0W'K1m2mwD0[A1].End(xlDown).Row                               'A列首行向下第一个有值之行数爱好者博墅6x"y@4np Y h1F
[IV1].End(xlToLeft).Column                        '第一行末列向左第一列有数值之列数。
Rx_7\ F#IT`P%{0[A1].End(xlToRight).Column                       '第一行首列向右有连续值的末列之列数爱好者博墅Sk1?(z{ Cnk
Application.CommandBars("Standard").Controls(2).BeginGroup=True '在常用工具栏的第二个按钮前插入分隔符爱好者博墅bml W]
Cells.WrapText = False             '取消自动换行
jN)[]Uk!o0    If Len(Target) > 5 Then           '如果当前单元格中的字符数超过5个,执行下一行
'M"y9Xp(M0        Target.WrapText = True        '自动换行爱好者博墅 ?*TiI&B'S_ BR(Q
    End If
[A1:B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden = True      '有空格即隐藏行爱好者博墅K h-t.O,?f
[A2].parent.name                                                '返回活动单元格的工作表名
d$C tQd+g"fD0[A2].parent.parent.name                                         '返回活动单元格的工作簿名
[aV.^Lx,f&\X0如下代码可使工作簿打开后30秒(或闲置30秒)内不输入、不重新选择等,自动关闭工作簿
9Q!y2qaXO*C0Private Sub Workbook_Open()               '工作簿打开事件
"v7nl*F1`6av-m*t;f?0   tt                                     '工作簿打开时启动 tt 过程
6a-Gl"s.Fr0End Sub爱好者博墅 uhb] m"u [Z
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  '工作表变化事件
Jx7g-cpB1Jb0   tt                                                                '工作表中任一单元格有变化时启动 tt 过程
5L:qKJ.g8H5Cz9O~0End Sub爱好者博墅S7I)^ P0XE!x L
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) '工作表选择变化事件爱好者博墅K%t#d;r)a:B
   tt                                                            '工作表中单元格的选择有变化时启动 tt 过程
:^zZ8I1I)Hd0End Sub
8oI @1_Y/e u0Sub tt()                                       'tt 过程
3s)e A:LiQ0   Dim myNow As Date, BL As Integer            '定义myNow为日期型;定义BL为长整型爱好者博墅u{:~s8g8_
   myNow = Now                                 '把当前的时间赋给变量myNow
lK(W#b&lM0   Do                                          '开始循环语句Do
5?ZELz `0      BL = Second(Now) - Second(myNow)         '循环中不断检查变量BL的值
A|ln_l0      If BL = 30 Then GoTo Cl                  '当BL=30即跳转到CL爱好者博墅-k3V X^ G,`^)Y
      DoEvents                                 '转让控制权,以便sheets可继续操作爱好者博墅N o&szyltlvG
   Loop Until BL > 30                          '当BL>30即跳出循环爱好者博墅Z?T9Vw-TU*c6P
   Exit Sub
kiP-P Ot2H0Cl:
D&~ Af1E@Y"L0   Application.EnableEvents = False            '避免引起其他事件
J7z0^|V-a4Wp7mS0   ActiveWorkbook.Close True                   '关闭活动工作簿并保存
"l:~2~i-P"V0   Application.EnableEvents = True             '可触发其他事件
9z"fPVP)Fp"j'|u1H0End Sub爱好者博墅2x-y$Ae*?Q ~E9X
range("e4").addcomment.Text "代头" & Chr(10) & "内容……"         '添加批注
1]|)E3@A0range("e4").Comment.Visible = True                     '显示批注爱好者博墅,O4c]I6D+@USdI
把工作簿中所有工作表的指定列调整为最佳列宽:爱好者博墅+nr!K4| F'{T
Sub 调整列宽()
5^Q5k Nvu-Ke4[0   Dim i%                
'W\.~\)K&N4Xe0   For i = 1 To Sheets.Count                '遍历工作簿中所有的工作表
T| W&E};?0      Sheets(i).Columns("A:K").AutoFit      '把每个工作表的[A:K]列调整为最佳列宽
] FSo&pzu8SdS&I x0   Next i                                   
e~9`]j0@K_0End Sub
D*d/TL2AaK0Do循环语句的几种形式:
'^BTC"H+U;@1C01.
(Pk6x @:Ny#l%]A8` l.t0Do While i>1     '条件为True时执行
&ha [O??0... ...  '要执行的语句
1UZ u:b8QFj6K0Loop爱好者博墅xFF/B \,R8w]7]
2.爱好者博墅}+jJ/K D,nH*D_2[
Do Until i>1     '条件为False时执行
&[.b%t~@MVZ0... ...  '要执行的语句爱好者博墅%n H-p%E6Z
Loop爱好者博墅ob ],d#j_
3.
5[.w1`l ?zM0Do
8x PbB6bn ow \sO0... ...  '要执行的语句爱好者博墅4c8@Lx5J h$gIDw
Loop While i>1   '条件为True时执行
R9\faUc \ R$\5s-dw;H04.
KG3@ {I"]M cA8y0g0Do爱好者博墅+V.k v^!b
... ...  '要执行的语句
-[g[Pi]0Loop Until i>1   '条件为False时执行爱好者博墅vL'P#}Rp*d7R
5.While...Wend 语句
7_g~4|F7i S9U0While i>1        '条件为True时执行爱好者博墅w x4R R1oHo B {
... ...  '要执行的语句
U| k)q%b1a0Wend
*^h.X+T.X d"f0勾选"VBA项目的信任"
!U oM6q2LA@D0Application.SendKeys "%(tmstv){ENTER}"                 '在 Excel 窗口操作爱好者博墅ZV@-p1r8C3_ ]*ss
Application.SendKeys "%(qtmstv){ENTER}"                '在 VBE 窗口操作爱好者博墅 d7T#G y#I%K/A8f
Application.CommandBars("命令按钮名称").Position = msoBarFloating  '使[命令按钮]悬浮在表格中爱好者博墅z/j\zA(b7}:P2I"E
   Application.CommandBars("命令按钮名称").Position = msoBarTop       '使[命令按钮]排列在工具栏中爱好者博墅"Y c-R,h?:YH1O%i
ActiveSheet.protect Password:="wshzw"                         '为工作表保护加口令爱好者博墅C5O{0P@f V4u
ActiveSheet.Unprotect Password:="wshzw"                         '解除工作表保护
*q$DD![U1aIw#?x4g0Activesheet.ProtectContents                                 '判断工作表是否处于保护状态
_MQJ)@ FL{0工作表的复制与命名
5`p9k3OF_0Sub wshzw()
MK$H4H;??h"N^0   Dim i As Integer
5P#vZ'mbE*oAdV.B0   For i = 1 To 5
u[4UmJ-z;\H0      Sheets("Sheet1").Copy After:=Sheets(1)  'Before/After 复制新表在 Sheets("Sheet1") 前/后爱好者博墅]s&H#x4@xP
      ActiveSheet.Name = i & "月"             '为复制的新表命名爱好者博墅gLH\[/`4y yK
   Next i
Z:N.p'qI6oZ3l4a0   Sheets("Sheet1").Name = "总表"             '为 Sheets("Sheet1") 改名
g7r+z!j5s$g|6?$y A0End Sub爱好者博墅4hq#pU#maf(Y
Application.EnableEvents = False      爱好者博墅$@q `!O\ i h
      ......
c6`0|)B_tF*f0Application.EnableEvents = True   '抑制事件连锁执行
Application.EnableEvents = False爱好者博墅\5wzV/S9q
ActiveWorkbook.Save     '抑制BeforeSave事件的发生
pN qaN7J5A$jX3Q0Application.EnableEvents = True     '抑制指定事件
Application.DisplayAlerts=False  '屏蔽确认提示
Application.ScreenUpdating = False爱好者博墅$\s o/PT1sq3^
   .......爱好者博墅t)K*c2u*V1| pc4y2a
Application.ScreenUpdating = true    ' 冻结屏幕以加快程序运行
&WHM4Q&t\Vrn0 
/dCd$d[up~0ActiveCell.CurrentRegion.Select                              '选择与活动单元格相连的区域
range("a2:a20").NumberFormatLocal = "00-00"                          '区域的格式化
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row          '已用区域的最末行
ActiveSheet.Copy Before:=Sheets(1)                          '复制活动工作表到第一张工作表之前
range("a2:a20").FormulaHidden = True                           '工作表处于保护状态时隐藏部分单元格公式

LCm j,@}#^7W0FileDateTime("E:\My Documents\33.xls")
{-O:`y\7tJ0
`u ty0| Ns2f1C0FileDateTime(thisworkbook.FullName)     '文件被创建或最后修改后的日期和时间
FileLen(thisworkbook.FullName) / 1024
!q&z,p`q+y$js9k q0
r;\%e2|"Tzk9Z$y*x0FileLen("E:\My Documents\temp\33.xls") / 1024     '文件的长度(大小),单位是 KB
?(s7u%v2j/M3O:V!F0Application.AskToUpdateLinks = False                     '不询问是否更新链接,并自动更新链接爱好者博墅J1B0FU#I {7O0P C%H
ActiveSheet.Hyperlinks.Delete                                   '删除活动工作表超链接
.WC$I n$Q:DX0ActiveWorkbook.SaveLinkValues = False                        '不保存活动工作簿的外部链接值
f;U)X:M\0ActiveSheet.PageSetup.CenterFooter = Range("k2").Value          '打印时设置自定义页脚爱好者博墅{+hQ6Q)p
ActiveSheet.PageSetup.Orientation = xlLandscape                 '设置为横向打印爱好者博墅]$~,WJ'qru8RD a
ActiveSheet.PageSetup.Orientation = xlPortrait                  '设置为纵向打印
g:Q:k"t-L^0Application.WindowState = xlMinimized    '最小化窗口爱好者博墅;^8m&QzTP
    Application.WindowState = xlNormal    '最大化窗口
*_R/v+yb0Sub 删除工作表()
*N:K,d0y ?%Hn0    Application.DisplayAlerts = False爱好者博墅$JJyi.l.G
    Sheet1.Delete
T8sj.t3S3U {/NFqn_0    Application.DisplayAlerts = True爱好者博墅 F"_!M4P o6\
End Sub
L j)C@*h0有删除就有添加
8I I9q'\7V}H0Sub 添加工作表()
h.U-fv#fSJ0    For i = 1 To 5
BYbfs0?J5`@VO V0        Worksheets.Add.Name = i
3~z{b AZP"] Y y0    Next
dMn9O-H0End Sub爱好者博墅j S!y"V7M"Q+{!nD
[A1:A20].AdvancedFilter xlFilterCopy, [B1], Unique:=True          '可去掉重复数据
"A4Od)Lv5R*\4A0[A2:C32].Replace What:="F", Replacement:="G"                     '指定范围内的查找与替换爱好者博墅 Ec e6~ W'j'RI*{t
Activesheet.AutoFilterMode = false                              '取消自动筛选爱好者博墅 r+Px ?/u&Z
执行以下语句可有效缩小工作簿的大小,执行前请先看清每条语句的作用:
ActiveSheet.UsedRange.ClearComments             '清除活动工作表已使用范围所有批注
x T(c] ygz0ActiveSheet.UsedRange.ClearFormats             '清除活动工作表已使用范围所有格式
Se[z vi[0ActiveSheet.UsedRange.Validation.Delete         '取消活动工作表已使用范围的数据有效性爱好者博墅GAn-Y#l9X^j7e!M+_
ActiveSheet.Hyperlinks.Delete                   '删除活动工作表超链接爱好者博墅 ?HJ'Uk1y_ r
ActiveSheet.DrawingObjects.Delete               '删除活动工作表已使用范围的所有对象
KL\4Z,~;Z0ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value      '取消活动工作表已使用范围的公式并保留值爱好者博墅Z T+Q#Y yw,a
还有:
lN bc{!uO0Sub x()
njj.S4b9g"Jw0   Dim myRange As String爱好者博墅 c~N;I7f
   myRange = ActiveSheet.UsedRange.Address     '去除活动工作表无数据的行列
gFp6Qnd `WB0End Sub
 

ActiveWorkbook.FullName                          '当前窗口文件名与路径
(J(bB7_%Yjn|@0Application.AltStartupPath= "E:\My\MyStart"      '替补启动目录路径
q9V-l*yW2xbr0Application.AutoRecover.Path                     '返回/设置Excel存储"自动恢复"临时文件的完整路径
l)sr6W3rG0Application.DefaultFilePath                      '选项>常规中的默认工作目录
zROId0Application.Evaluate("=INFO(""directory"")")     '默认工作目录
o:s?q)Y2C0Application.LibraryPath                          '返回库文件夹的路径
$x+S H2w],TU6w;LV0Application.NetworkTemplatesPath                 '返回保存模板的网络路径
!U,E6Qh l4^ LR,SUU0Application.Path                                 '返回应用程序完整路径
^'f'P.qb0Application.RecentFiles.Item(1).Path             '返回最近使用的某个文件路径,Item(1)=第一个文件
Hh9ZS+b LX4V0Application.StartupPath                          'Excel启动文件夹的路径
vWW#F/h@NR0Application.TemplatesPath                        '返回模板所存储的本地路径
1`uHm,{ L!a0Application.UserLibraryPath                      '返回用户计算机上 COM 加载宏的安装路径
qSUsc\$C:B0Debug.Print Application.PathSeparator            '路径分隔符 "\"爱好者博墅Qi,\.`Z@5\(p'^O7G@%n
CurDir                                           '默认工作目录爱好者博墅5z8o)dI9I3rH+R
Excel.Parent.DefaultFilePath                     '默认工作目录爱好者博墅;y+T4l*T)[,h
ThisWorkbook.Path                                '返回当前工作薄的路径爱好者博墅5H"h |z1QGt
dim mm(2,10)
A e$qk3L O:K ~0Range("a1:b10")=mm              '可以将二维数组赋值给Range
6^O(He] F/w_@0Application.Dialogs(XLdialogsaveas).show     显示保存对话框爱好者博墅J hi\3h
[SIZE=1]Sub x()
\1gE|.YV&Nn0   Dim myRange As String爱好者博墅[!OQl w5| N {B
   myRange = ActiveSheet.UsedRange.Address     '去除活动工作表无数据的行列
~~ q9JKf3Z"S*s d(Jk0End Sub爱好者博墅Z;q@.k:|r)D^
这相当于把新的已使用区域赋值给变量,效果等同于手工删除多余的列或行后立即保存;

来一个函数的爱好者博墅 fT&M+i)|T6C
Private Sub Worksheet_SelectionChange(ByVal Target As Range)爱好者博墅4S.YR!C;T^!g+FS
'右边单元格反向显示活动单元格文本爱好者博墅~6o kU7RB5HyO
If ActiveCell.Column < 256 Then ActiveCell.Offset(0, 1) = StrReverse(ActiveCell)
'i3HR{$oe0End Sub

想不到UsedRange还可以这样用,又学到了!有了这个就可以轻松取得当前Sheet的最末行和最末列号了:爱好者博墅y/f,X.F!w|
Sub test()爱好者博墅Iuw4F B x
Dim myRange As String爱好者博墅_\%t1~ ]!to(B
myRange = ActiveSheet.UsedRange.Address
'VYF`S-|9M/K0Debug.Print "LastRow=" & Cells.SpecialCells(xlCellTypeLastCell).Row
e3AZ{\%Q0Debug.Print "LastColumn=" & Cells.SpecialCells(xlCellTypeLastCell).Column
5U)]4_,v3P*{^#x8fj|0myRange = ""爱好者博墅x0vK^wf#}
End Sub爱好者博墅5XaKqpi
跟一帖:如上下相邻单元格数据相同则删除一个
Opx2o(tV0Sub Yjue()爱好者博墅(pDH7rj
   Dim myCell As Range, NCell As Range        '定义
/` sQ6n)b0   Set myCell = ActiveSheet.Range("b2")       '把对象ActiveSheet.Range("b2")赋给变量myCell爱好者博墅d-}r7a+@5q ]o)Q
   Do While Not IsEmpty(myCell)               '条件为True时执行
R/~fyW\)sf0      Set NCell = myCell.Offset(1, 0)         '把对象myCell的下一个单元格赋给变量NCell爱好者博墅&E)_x.y@Z3J
      If NCell.Value = myCell.Value Then      '如上下相邻单元格数据相同,则望下执行爱好者博墅~)V0O2f{C7i!L
          myCell.Delete                       '删除myCell
6o.G1Fz(X ?0      End If                                  '结束条件语句爱好者博墅 nZ1g8N@K1A"q
      Set myCell = NCell                      '把变量NCell赋给变量myCell,等于在循环中把原myCell下移了一格爱好者博墅i{z)_0S:fR A*xg_
   Loop
W4Z%M~9i6s;O n I"C0End Sub爱好者博墅 t!Xgd-d&M
复制行高列宽与内容:
%iH*w(AKUJ0Sub Yjue()                      '过程的名称
dazm"Kq0   Sheet2.Rows("2:23").Copy     '复制行区域
PF d\w1@0   Sheet3.Select                '选择粘贴区域爱好者博墅Y,R&I`eN#]Z9G]
   Range("A2").PasteSpecial Paste:=xlPasteColumnWidths   '粘贴类型
P"Q_x e},`l5I-l-Q0   ActiveSheet.Paste            '实施粘贴爱好者博墅p0re/r yb0T
   Application.CutCopyMode = False   '取消复制模式
s.r-r z&KVA0End Sub爱好者博墅gZW.K8m%g3j
如整行为空白则删除整行:

Sub DelRow()爱好者博墅K8dh%iY
   Dim i As Integer, LastRow As Integer
{ p.sp Y0   LastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row  '把最后行的行号赋给变量
~*]'pC t N0   For i = LastRow To 1 Step -1                                      '倒循环
&oXHzk}0      If Range("iv" & i).End(xlToLeft).Column = 1 And Range("a" & i) = "" Then
l#d E1u ~`B1[x,Dy0         Range("a" & i).EntireRow.Delete                          '如整行为空白则删除整行爱好者博墅K2Qs*n8~#]~
      End If爱好者博墅^,?5W5E v s\+N4Bu!D
   Next i                                       爱好者博墅(e C)yp1[b1u
End Sub

T = Application.GetOpenFilename("Text Files (*.dat), *.dat")选择文件保存路径爱好者博墅4p!D?}xB
通过依次赋色给单元格的例子,展示简单的 On Error GoTo Line1 用法:

Sub Yjue()                '过程名
)BW3uG*h+|8Y u0   Dim i As Integer       '定义 i 为整型
s0hqlU$@0   On Error GoTo Line1    '遇到错误跳转到 Line1
"D5q'd:DMq E{.GE0   For i = 0 To 65        '予设从 0 循环到 65爱好者博墅}:`m!T(j*^Q`O
      Cells(i + 1, 2).Interior.ColorIndex = i  '依次赋色给第2列的单元格爱好者博墅n4c3q+n'h!G_[
      Cells(i + 1, 1) = i                      '依次给第1列的单元格标上色索引号
'jCsk8R U0   Next i
(z/\ wn;Ovq'Y#hy0   Exit Sub              '退出过程爱好者博墅~XE i.Mah
Line1:                   '遇到错误跳转到这行继续执行爱好者博墅3Y\'~V_F
   MsgBox "默认颜色只有 " & i - 1 & "种。"    '提示对话框
},k)[X%F M&l!_0End Sub                  '结束过程

通过显示或取消网格线,展示运算符“Not”应用的简单示例:
0gk*A.WKA0   Dim myLine As Boolean                     '定义变量myLine为布尔型
"r[5^E*aM/T0   With CommandButton1                         'With语句结构爱好者博墅SX$}U Uz
      If .Caption = "取消网格线" Then             '如按钮上显示为"取消网格线"
R|8p/w*|0         .Caption = "显示网格线"                  '改按钮上的字幕为"显示网格线"爱好者博墅*Y p,p9h P,fj
         myLine = ActiveWindow.DisplayGridlines       '把活动窗口当前网格线的显示状态赋给变量爱好者博墅"b i I,X{.kg[
         ActiveWindow.DisplayGridlines = Not myLine     '进行逻辑否定运算
c!gpRU;D%|0      Else              
qK]G:P }0         .Caption = "取消网格线"                        '否则按钮上显示为"取消网格线"爱好者博墅j\%qW0Du'@+|_
         ActiveWindow.DisplayGridlines = Not myLine     '进行逻辑否定运算
4B^8O Q-K0      End If爱好者博墅\*hohd$t,u
   End With                           '结束With语句结构

ActiveCell.Offset(, -1).Name = "hzw"                            '定义名称
)~ [e%ch0c#hB8@B0ActiveCell.Precedents.Address                                   '被当前单元格所引用的区域地址
9\3r8?giC#J:O0ActiveCell.Resize(0, 2).Select                                  '选定当前单元格并向右延伸二格爱好者博墅;a]*va S:g1w$D
Activesheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 '显示自动筛选后的行数爱好者博墅W7\vyYW,t J+CU2t
 
$d?Y[ Jyymd0有选择地删除指定区域内的单元格

点击按钮可选择性的删除[A1:A20]区域内含有[D1]中字样的单元格;再点击按钮可返回原样;爱好者博墅0I#E@$A4Z/n j
如果替换了[D1]中的字样,点击按钮后所删除[A1:A20]区域中的单元格亦会随着变化。

   With CommandButton1
y ]'c)Vyd0      If .Caption = "删除单元格" Then       '如按钮显示的字符为:"删除单元格",
l#v"Y r,v&a$hwC0         .Caption = "反悔删除"              '则改为:"反悔删除"
gbxwZUQi0         For i = 20 To 1 Step -1            '倒循环爱好者博墅S$m+xC^*d;Y[
            If Cells(i, 1) Like "*" & Range("d1") & "*" Then爱好者博墅OC&X'} j~V8e2?E
               Cells(i, 1).Delete Shift:=xlUp     '如循环中发现某个单元格含有[D1]中字符,则删除该单元格爱好者博墅3uM!Eyg0zb,i@zK
            End If
5X1f}6mum V%} c2R0         Next i
0O*\(O V#s(Myom0      Else爱好者博墅p8?*|_.o5f
         .Caption = "删除单元格"            '否则让按钮显示的字符为:"删除单元格"
*@Vo2A'zkE0t\0         Range("a1:a20") = Range("f1:f20").Value   '把[F1:F20]赋给[A1:A20],为了可反复测试爱好者博墅4e6@@w&pV
      End If爱好者博墅,S/B_"D'b8e1i L/R
   End With

下面换个话题,举一个限制鼠标只能在[B2:G60]以外的区域活动的例子:

   With ActiveSheet                      'With 语句,在一个单一对象上执行一系列的语句爱好者博墅e@8qt8p;h(v
      .Unprotect                         '解除没设密码的工作表保护
5A^b `!eo,\0      .Cells.Locked = False              '解除活动工作表中所有单元格的“锁定”爱好者博墅8DA k'd H{ ^8b
      .Range("b2:g60").Locked = True     '只锁定 [B2:G60] 区域爱好者博墅Qc4{(N~` r
      .EnableSelection = xlUnlockedCells   '仅允许选定未被有效锁定的单元格爱好者博墅 Q1Zbn7^$u!E/I/D
      .Protect                           '工作表保护(没设密码)爱好者博墅&j0lN4w:Oc!b
   End With                              'With 语句结束

一个复制数据后,只能粘贴数值的例子

Private Sub Worksheet_SelectionChange(ByVal T As Range)  '工作表SelectionChange事件
,VW)NiF.B0   On Error Resume Next                                  '忽略代码运行中的错误,并越过错误继续执行后面的语句爱好者博墅Rn@I(LN
   If T.Column = 1 Then                                '如活动单元格为第一列时执行下面的语句
hZq e!L0      Selection.PasteSpecial Paste:=xlPasteValues     '粘贴数值
q,tF&[NN0      Application.CutCopyMode = False                 '立即清空剪贴板爱好者博墅m u7m,O:yJX[
   End If                                            'IF结构结束爱好者博墅U5F'l'l%Gv%[q)K
End Sub                                              '本过程结束

-----------------------------------------------------------
-\)I_9U,W0如何用VBA获得工作簿名称?
z'_ Zs:Y0For Each wbk In Workbooks
tj"N5ZF'h0    MsgBox wbk.Name爱好者博墅'of HhW#s4F.h h;r
Next

Workbooks.Close  '关闭所有工作簿爱好者博墅/KH6_fha,a)f'@
Application.Quit '关闭所有工作簿
I g1n;y&X0P.S5zr0 
y8u ]j ?NC0工作簿调用的问题

本人做了一个程序,里面自定义了工具菜单:
\hcz"@q `K*p0     如果程序打开后,调用了一个新的工作簿,当再次调用第二个新的工作簿时如何用vba编写一段代码,先保存退出调用的第一个工作簿,然后再打开第二个新的工作簿

Dim Wb As Workbook

Sub test()爱好者博墅/Gx,`B0AX2XK6b.j
Set Wb = Workbooks.Open("book2.xls")
%RU(d#h\7K6v.x4Q-|5G o0End Sub

爱好者博墅#U0f)Ejsy?FZ
Sub test2()爱好者博墅}6g2kxG@^!R b
Wb.Close savechanges:=True
{\+yu,L%B0S0Set Wb = Workbooks.Open("book5.xls")
1c_K*p#[(n$e h,j0End Sub

下面代码为何不能进行两工作簿中的工作之间的复制?(复制代码出现不支持此属性或方法的错误)

 Mybo = ActiveWorkbook.Name爱好者博墅0|+t7ah`w
    She = Sheets(1).Name
\b{!g LU ^0    Range("A1:B1").Select
CP7U8{8vF-[;p0    Selection.AutoFilter爱好者博墅#M0z+R8~j Sx*_
    Range("B2").Select
-e7P T8G/{$} l#h0    Selection.AutoFilter Field:=1, Criteria1:=">100", Operator:=xlAnd, _
+I8P k1]}O0        Criteria2:="<200"爱好者博墅%Z#]o&t iDpu t2D
    Windows(Mybo).Worksheets(She).Range("A1:K5000").Copy _爱好者博墅.V|s(w9D
        Destination:=Windows(mybook).Worksheets("acfmis").Range("A1")


TAG: 计算机知识

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-07-14  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 178742
  • 日志数: 249
  • 图片数: 9
  • 书签数: 66
  • 建立时间: 2006-08-25
  • 更新时间: 2008-02-22

RSS订阅

Open Toolbar