<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[海洋公园]]></title>
  <subtitle type="html"><![CDATA[★知识成就梦想！★]]></subtitle>
  <id>http://www.bycee.cn/</id>
  <link rel="alternate" type="text/html" href="http://www.bycee.cn/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.bycee.cn/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2011-08-14T19:53:40+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[MD5查看器]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=14" label="资源共享" /> 
	  <updated>2011-08-14T19:53:40+08:00</updated>
	  <published>2011-08-14T19:53:40+08:00</published>
		  <summary type="html"><![CDATA[<p style="text-align: center"><span style="font-size: 16px"><span style="color: #0000ff"><strong>MD5查看器 v1.0</strong></span></span></p>
<p style="text-align: left"><span style="font-size: 16px"><span style="color: #0000ff"><strong><span style="font-size: 14px">&nbsp;&nbsp; 小巧方便的MD5查看器，支持拖拽操作，直接将文件拖至列表框即可将其添加至列表，添加完成后点击计算即可完成MD5值的计算，还支持排序操作点击对应的标题即可根据该标题排序！win7和<span style="font-size: 16px"><span style="color: #0000ff"><strong><span style="font-size: 14px">vista可以直接运行，XP需要</span></strong></span></span>微软NET 2.0的支持！</span></strong></span></span></p>
<p>&nbsp;</p>
<p style="text-align: left"><span style="font-size: 16px"><span style="color: #0000ff"><strong>&nbsp;&nbsp;下载地址：<a href="http://www.bycee.cn/attachments/month_1108/p201181419520.rar"><img border="0" alt="" style="margin: 0px 2px -4px 0px" src="http://www.bycee.cn/images/download.gif" />点击下载此文件</a>&nbsp; 或者去这里下载<a target="_blank" href="http://u.115.com/file/aq3zydns#Download">http://115.com/file/aq3zydns</a></strong></span></span></p>
<p style="text-align: left"><span style="font-size: 16px"><span style="color: #0000ff"><strong><img alt="" src="http://www.bycee.cn/attachments/month_1108/92011814195126.png" />&nbsp;&nbsp;&nbsp; </strong></span></span></p>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=120" /> 
	  <id>http://www.bycee.cn/default.asp?id=120</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[如何设置程序的运行状态？]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=3" label="电脑/网络杂谈" /> 
	  <updated>2009-09-03T13:10:46+08:00</updated>
	  <published>2009-09-03T13:10:46+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="color: #0000ff">如何设置程序的运行状态？<br />
'---------------------------------------------<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用系统托盘程序演示<br />
'---------------------------------------------<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 洪恩在线 求知无限<br />
'---------------------------------------------<br />
'程序说明：<br />
'&nbsp;&nbsp; 这是一个比较完整的使用系统托盘的程序实例，包括<br />
'了：添加托盘图标，删除托盘图标，动态改变托盘图标，<br />
'为托盘图标添加浮动提示信息，实现托盘图标的鼠标右键<br />
'菜单等内容。<br />
'-------名称-------------------作用------------<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主窗体<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuFile,mnuFileExit&nbsp;&nbsp;&nbsp;&nbsp; 文件菜单，菜单项<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTray,mnuTrayClose... 托盘区右键菜单，菜单项<br />
'---------------------------------------------</span></p>
<p><span style="color: #0000ff">Option Explicit</span></p>
<p><span style="color: #0000ff">'LastState变量的作用是标示主窗体原有状态<br />
Public LastState As Integer</span></p>
<p><span style="color: #0000ff">'【VB声明API函数】<br />
'&nbsp; Private Declare Function SendMessage Lib &quot;user32&quot; Alias &quot;SendMessageA&quot; (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long</span></p>
<p><span style="color: #0000ff">'【说明】<br />
'&nbsp; 调用一个窗口的窗口函数，将一条消息发给那个窗口。除非消息处理完毕，否则该函数不会返回。SendMessageBynum，<br />
'&nbsp; SendMessageByString是该函数的&ldquo;类型安全&rdquo;声明形式</span></p>
<p><span style="color: #0000ff">'【返回值】<br />
'&nbsp; Long，由具体的消息决定</span></p>
<p><span style="color: #0000ff">'【参数表】<br />
'&nbsp; hwnd -----------&nbsp; Long，要接收消息的那个窗口的句柄</span></p>
<p><span style="color: #0000ff">'&nbsp; wMsg -----------&nbsp; Long，消息的标识符</span></p>
<p><span style="color: #0000ff">'&nbsp; wParam ---------&nbsp; Long，具体取决于消息</span></p>
<p><span style="color: #0000ff">'&nbsp; lParam ---------&nbsp; Any，具体取决于消息<br />
Private Declare Function SendMessage Lib &quot;user32&quot; Alias &quot;SendMessageA&quot; (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long</span></p>
<p><span style="color: #0000ff">'表示发送的是系统命令<br />
Private Const WM_SYSCOMMAND = &amp;H112<br />
Private Const SC_MOVE = &amp;HF010&amp;<br />
Private Const SC_RESTORE = &amp;HF120&amp;<br />
Private Const SC_SIZE = &amp;HF000&amp;</span></p>
<p><span style="color: #0000ff">'当主窗体加载时<br />
Private Sub Form_Load()<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; '窗体的WindowState属性，返回或设置一个值，该值用来指定在运行时窗体窗口的可视状态<br />
&nbsp;&nbsp;&nbsp; 'vbNormal&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; （缺省值）正常 。<br />
&nbsp;&nbsp;&nbsp; 'VbMinimized 1&nbsp;&nbsp; 最小化（最小化为一个图标）<br />
&nbsp;&nbsp;&nbsp; 'VbMaximized 2&nbsp;&nbsp; 最大化（扩大到最大尺寸）<br />
&nbsp;&nbsp;&nbsp; If WindowState = vbMinimized Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastState = vbNormal<br />
&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastState = WindowState<br />
&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; '将图标添加到托盘的函数，参见模块中的解释<br />
&nbsp;&nbsp;&nbsp; '注意了这是从主程序到模块的入口，本例中并没有直接调用Shell_NotifyIcon函数<br />
&nbsp;&nbsp;&nbsp; AddToTray Me, mnuTray<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; SetTrayTip &quot;托盘图标演示，点击右键弹出菜单&quot;<br />
End Sub</span></p>
<p><span style="color: #0000ff">'在主窗体Form1大小改变时，相应改变右键菜单mnuTray的菜单项的可用属性Enabled<br />
Private Sub Form_Resize()<br />
&nbsp;&nbsp;&nbsp; Select Case WindowState<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '如果窗体最小化了，把菜单项&ldquo;最大化&rdquo;&ldquo;恢复&rdquo;设为可用，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '而把&ldquo;最小化&rdquo;&ldquo;移动&rdquo;&ldquo;大小&rdquo;三项设为不可用.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '如果这时在托盘图标上点击鼠标右键，会发现不可用项变为灰色<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case vbMinimized<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMaximize.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMinimize.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMove.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayRestore.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTraySize.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '窗体最大化时<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case vbMaximized<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMaximize.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMinimize.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMove.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayRestore.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTraySize.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '一般状态下<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Case vbNormal<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMaximize.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMinimize.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayMove.Enabled = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTrayRestore.Enabled = False<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mnuTraySize.Enabled = True<br />
&nbsp;&nbsp;&nbsp; End Select</span></p>
<p><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; If WindowState &lt;&gt; vbMinimized Then LastState = WindowState<br />
End Sub</span></p>
<p><span style="color: #0000ff">'保证在程序退出时删除托盘图标<br />
Private Sub Form_Unload(Cancel As Integer)<br />
&nbsp;&nbsp;&nbsp; RemoveFromTray<br />
End Sub</span></p>
<p><span style="color: #0000ff">'&ldquo;文件&rdquo;菜单的&ldquo;退出&rdquo;项被点击时<br />
Private Sub mnuFileExit_Click()<br />
&nbsp;&nbsp;&nbsp; Unload Me<br />
End Sub</span></p>
<p><span style="color: #0000ff">'托盘图标右键菜单上的&ldquo;退出&rdquo;项被点击时<br />
Private Sub mnuTrayClose_Click()<br />
&nbsp;&nbsp;&nbsp; Unload Me<br />
End Sub</span></p>
<p><span style="color: #0000ff">'托盘图标右键菜单上的&ldquo;最大化&rdquo;项被点击时<br />
Private Sub mnuTrayMaximize_Click()<br />
&nbsp;&nbsp;&nbsp; WindowState = vbMaximized<br />
End Sub</span></p>
<p><span style="color: #0000ff">'托盘图标右键菜单上的&ldquo;最小化&rdquo;项被点击时<br />
Private Sub mnuTrayMinimize_Click()<br />
&nbsp;&nbsp;&nbsp; WindowState = vbMinimized<br />
End Sub</span></p>
<p><span style="color: #0000ff">'托盘图标右键菜单上的&ldquo;移动&rdquo;项被点击时<br />
Private Sub mnuTrayMove_Click()<br />
&nbsp;&nbsp;&nbsp; SendMessage HWnd, WM_SYSCOMMAND, _<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC_MOVE, 0&amp;<br />
End Sub</span></p>
<p><span style="color: #0000ff">'托盘图标右键菜单上的&ldquo;恢复&rdquo;项被点击时<br />
Private Sub mnuTrayRestore_Click()<br />
&nbsp;&nbsp;&nbsp; SendMessage HWnd, WM_SYSCOMMAND, _<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC_RESTORE, 0&amp;<br />
End Sub</span></p>
<p><span style="color: #0000ff">'托盘图标右键菜单上的&ldquo;退出&rdquo;项被点击时<br />
Private Sub mnuTraySize_Click()<br />
&nbsp;&nbsp;&nbsp; SendMessage HWnd, WM_SYSCOMMAND, _<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC_SIZE, 0&amp;<br />
End Sub<br />
'-----------------------------------------<br />
'以下为模块中的代码：<br />
'-----------------------------------------<br />
Option Explicit</span></p>
<p><span style="color: #0000ff">Public OldWindowProc As Long<br />
Public TheForm As Form<br />
Public TheMenu As Menu<br />
'【VB声明API函数】<br />
'Declare Function CallWindowProc Lib &quot;user32&quot; Alias &quot;CallWindowProcA&quot; (ByVal lpPrevWndFunc As Long, ByVal HWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long</span></p>
<p><span style="color: #0000ff">'【说明】<br />
'&nbsp; 此函数发送消息到一个窗口过程</span></p>
<p><span style="color: #0000ff">'【返回值】<br />
'&nbsp; Long，依据发送的消息不同而变化</span></p>
<p><span style="color: #0000ff">'【参数表】<br />
' lpPrevWndFunc----- Long，原来的窗口过程地址</span></p>
<p><span style="color: #0000ff">' HWnd-------------- Long，窗口句柄</span></p>
<p><span style="color: #0000ff">' Msg -------------- Long，发送的消息</span></p>
<p><span style="color: #0000ff">' wParam ----------- Long，消息类型，参考wParam参数表</span></p>
<p><span style="color: #0000ff">' lParam ----------- Long，依据wParam参数的不同而不同</span></p>
<p><span style="color: #0000ff">Declare Function CallWindowProc Lib &quot;user32&quot; Alias &quot;CallWindowProcA&quot; (ByVal lpPrevWndFunc As Long, ByVal HWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long</span></p>
<p><span style="color: #0000ff">'【VB声明API函数】<br />
'&nbsp; Private Declare Function SetWindowLong Lib &quot;user32&quot; Alias &quot;SetWindowLongA&quot; (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long</span></p>
<p><span style="color: #0000ff">'【说明】<br />
'&nbsp; 在窗口结构中为指定的窗口设置信息</span></p>
<p><span style="color: #0000ff">'【返回值】<br />
'&nbsp; Long，指定数据的前一个值</span></p>
<p><span style="color: #0000ff">'【参数表】<br />
'&nbsp; hwnd -----------&nbsp; Long，欲为其取得信息的窗口的句柄</span></p>
<p><span style="color: #0000ff">'&nbsp; nIndex ---------&nbsp; Long，请参考GetWindowLong函数的nIndex参数的说明</span></p>
<p><span style="color: #0000ff">'&nbsp; dwNewLong ------&nbsp; Long，由nIndex指定的窗口信息的新值<br />
Declare Function SetWindowLong Lib &quot;user32&quot; Alias &quot;SetWindowLongA&quot; (ByVal HWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long</span></p>
<p><span style="color: #0000ff">'【VB声明API函数】<br />
'Declare Function Shell_NotifyIcon Lib &quot;shell32.dll&quot; Alias &quot;Shell_NotifyIconA&quot; (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long</span></p>
<p><span style="color: #0000ff">'【说明】</span></p>
<p><span style="color: #0000ff">'【参数表】<br />
'参数dwMessage ---- 为消息设置值，它可以是以下的几个常数值：0、1、2</span></p>
<p><span style="color: #0000ff">'NIM_ADD = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入图标到系统状态栏中<br />
'NIM_MODIFY = 1&nbsp;&nbsp;&nbsp;&nbsp; 修改系统状态栏中的图标<br />
'NIM_Delete = 2&nbsp;&nbsp;&nbsp;&nbsp; 删除系统状态栏中的图标</span></p>
<p><span style="color: #0000ff">'参数LpData ---- 用以传入NOTIFYICONDATA数据结构变量，我们也需要在&quot;模块&quot;中定义其结构如下：</span></p>
<p><span style="color: #0000ff">'Type NOTIFYICONDATA<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cbSize As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 需填入NOTIFYICONDATA数据结构的长度<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HWnd As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置成窗口的句柄<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uid As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为图标所设置的ID值<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UFlags As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用来设置以下三个参数uCallbackMessage、hIcon、szTip是否有效<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UCallbackMessage As Long&nbsp;&nbsp;&nbsp; 消息编号<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HIcon As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示在状态栏上的图标<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SzTip As String * 64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 提示信息<br />
'End Type</span></p>
<p><span style="color: #0000ff">'---- 其中参数uCallbackMessage、hIcon、szTip也应在模块中声明为以下的常量：<br />
'Public Const NIF_MESSAGE = 1<br />
'Public Const NIF_ICON = 2<br />
'Public Const NIF_TIP = 4</span></p>
<p><span style="color: #0000ff">Declare Function Shell_NotifyIcon Lib &quot;shell32.dll&quot; Alias &quot;Shell_NotifyIconA&quot; (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long</span></p>
<p><span style="color: #0000ff"><br />
Public Const WM_USER = &amp;H400<br />
Public Const WM_LBUTTONUP = &amp;H202<br />
Public Const WM_MBUTTONUP = &amp;H208<br />
Public Const WM_RBUTTONUP = &amp;H205<br />
Public Const TRAY_CALLBACK = (WM_USER + 1001&amp;)<br />
Public Const GWL_WNDPROC = (-4)<br />
Public Const GWL_USERDATA = (-21)<br />
Public Const NIF_ICON = &amp;H2<br />
Public Const NIF_TIP = &amp;H4<br />
Public Const NIM_ADD = &amp;H0<br />
Public Const NIF_MESSAGE = &amp;H1<br />
Public Const NIM_MODIFY = &amp;H1<br />
Public Const NIM_Delete = &amp;H2</span></p>
<p><span style="color: #0000ff">'记录 设置托盘图标的数据 的数据类型NOTIFYICONDATA<br />
Public Type NOTIFYICONDATA<br />
&nbsp;&nbsp;&nbsp; cbSize As Long<br />
&nbsp;&nbsp;&nbsp; HWnd As Long<br />
&nbsp;&nbsp;&nbsp; Uid As Long<br />
&nbsp;&nbsp;&nbsp; UFlags As Long<br />
&nbsp;&nbsp;&nbsp; UCallbackMessage As Long<br />
&nbsp;&nbsp;&nbsp; HIcon As Long<br />
&nbsp;&nbsp;&nbsp; SzTip As String * 64<br />
End Type</span></p>
<p><span style="color: #0000ff">'TheData变量记录设置托盘图标的数据<br />
Private TheData As NOTIFYICONDATA<br />
' *********************************************<br />
' 新的窗口过程--主程序中采用SetWindowLong函数改变了窗口函数的地址，消息转向由NewWindowProc处理<br />
' *********************************************<br />
Public Function NewWindowProc(ByVal HWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; '如果用户点击了托盘中的图标，则进行判断是点击了左键还是右键<br />
&nbsp;&nbsp;&nbsp; If Msg = TRAY_CALLBACK Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '如果点击了左键<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lParam = WM_LBUTTONUP Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '而这时窗体的状态是最小化时<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If TheForm.WindowState = vbMinimized Then _<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '恢复到最小化前的窗体状态<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TheForm.WindowState = TheForm.LastState<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TheForm.SetFocus<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '如果点击了右键<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lParam = WM_RBUTTONUP Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '则弹出右键菜单<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TheForm.PopupMenu TheMenu<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; End If<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; '如果是其他类型的消息则传递给原有默认的窗口函数<br />
&nbsp;&nbsp;&nbsp; NewWindowProc = CallWindowProc(OldWindowProc, HWnd, Msg, wParam, lParam)<br />
End Function<br />
' *********************************************<br />
' 把主窗体的图标（Form1.icon属性可改变）添加到托盘中<br />
' *********************************************<br />
Public Sub AddToTray(frm As Form, mnu As Menu)</span></p>
<p><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; '保存当前窗体和菜单信息<br />
&nbsp;&nbsp;&nbsp; Set TheForm = frm<br />
&nbsp;&nbsp;&nbsp; Set TheMenu = mnu<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 'GWL_WNDPROC获得该窗口的窗口函数的地址<br />
&nbsp;&nbsp;&nbsp; OldWindowProc = SetWindowLong(frm.HWnd, GWL_WNDPROC, AddressOf NewWindowProc)<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; '知识点滴：HWnd属性<br />
&nbsp;&nbsp;&nbsp; '返回窗体或控件的句柄。语法: object.HWnd<br />
&nbsp;&nbsp;&nbsp; '说明:Microsoft Windows 运行环境，通过给应用程序中的每个窗体和控件<br />
&nbsp;&nbsp;&nbsp; '分配一个句柄（或 hWnd）来标识它们。hWnd 属性用于Windows API调用。</span></p>
<p><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; '将主窗体图标添加在托盘中<br />
&nbsp;&nbsp;&nbsp; With TheData<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Uid = 0&nbsp;&nbsp;&nbsp; '忘了吗？参考一下前面内容,Uid图标的序号，做动画图标有用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .HWnd = frm.HWnd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .cbSize = Len(TheData)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .HIcon = frm.Icon.Handle<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .UFlags = NIF_ICON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '指明要对图标进行设置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .UCallbackMessage = TRAY_CALLBACK<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .UFlags = .UFlags or NIF_MESSAGE&nbsp;&nbsp;&nbsp; '指明要设置图标或返回信息给主窗体，此句不能省去<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .cbSize = Len(TheData)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '为什么呢？我们需要在添加图标的同时，让其返回信息<br />
&nbsp;&nbsp;&nbsp; End With&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '给主窗体，Or的意思是同时进行设置和返回消息<br />
&nbsp;&nbsp;&nbsp; Shell_NotifyIcon NIM_ADD, TheData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '根据前面定义NIM_ADD，设置为&ldquo;添加模式&rdquo;<br />
End Sub<br />
' *********************************************<br />
' 删除系统托盘中的图标<br />
' *********************************************<br />
Public Sub RemoveFromTray()<br />
&nbsp;&nbsp;&nbsp; '删除托盘中的图标<br />
&nbsp;&nbsp;&nbsp; With TheData<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .UFlags = 0<br />
&nbsp;&nbsp;&nbsp; End With<br />
&nbsp;&nbsp;&nbsp; Shell_NotifyIcon NIM_Delete, TheData&nbsp;&nbsp; '根据前面定义NIM_Delete，设置为&ldquo;删除模式&rdquo;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; '恢复原有的设置<br />
&nbsp;&nbsp;&nbsp; SetWindowLong TheForm.HWnd, GWL_WNDPROC, OldWindowProc<br />
End Sub<br />
' *********************************************<br />
' 为托盘中的图标加上浮动提示（也就是鼠标移上去时出现的提示字条）<br />
' *********************************************<br />
Public Sub SetTrayTip(tip As String)<br />
&nbsp;&nbsp;&nbsp; With TheData<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .SzTip = tip &amp; vbNullChar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .UFlags = NIF_TIP&nbsp;&nbsp; '指明要对浮动提示进行设置<br />
&nbsp;&nbsp;&nbsp; End With<br />
&nbsp;&nbsp;&nbsp; Shell_NotifyIcon NIM_MODIFY, TheData&nbsp;&nbsp;&nbsp; '根据前面定义NIM_MODIFY，设置为&ldquo;修改模式&rdquo;<br />
End Sub<br />
' *********************************************<br />
' 设置托盘的图标（在本例中没有用到，如果要动态改变托盘内显示的图标，它非常有用）<br />
' 例如：1、显示动画图标（方法你一定猜到了，对！使用Timer控件，不断调用此过程，注意把动画放在pic数组中）<br />
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、程序处于不同状态时，显示不同的图标，方法是类似的<br />
' 有兴趣的话试一试吧。<br />
' *********************************************<br />
Public Sub SetTrayIcon(pic As Picture)<br />
&nbsp;&nbsp;&nbsp; '判断一下pic中存放的是不是图标<br />
&nbsp;&nbsp;&nbsp; If pic.Type &lt;&gt; vbPicTypeIcon Then Exit Sub</span></p>
<p><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; '更换图标为pic中存放的图标<br />
&nbsp;&nbsp;&nbsp; With TheData<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .HIcon = pic.Handle<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .UFlags = NIF_ICON<br />
&nbsp;&nbsp;&nbsp; End With<br />
&nbsp;&nbsp;&nbsp; Shell_NotifyIcon NIM_MODIFY, TheData<br />
End Sub<br />
</span></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=118" /> 
	  <id>http://www.bycee.cn/default.asp?id=118</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[SHELL语句用法心得]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=3" label="电脑/网络杂谈" /> 
	  <updated>2009-09-02T14:09:23+08:00</updated>
	  <published>2009-09-02T14:09:23+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="color: #0000ff">SHELL语句用法心得<br />
</span><span style="color: #0000ff"><br />
一. 调用系统&ldquo;创建快捷方式&rdquo;向导<br />
　　是否为VB不支持创建快捷方式而于着急呢？虽然您可以调用vb5stkit.dll中的fCreateShellLink函数，但它是为安装程序设计的，快捷方式的默认路径总是从当前用户的&ldquo;\Start Menu\Programs&rdquo;开始，也就是说，如果您的Windows95装在C盘上，您无法通过 fCreateShellLink 函数把快捷方式创建到D盘上去。<br />
　　现在，给大家介绍一种极为方便、巧妙的方法： 用Shell语句调用系统&ldquo;创建快捷方式&rdquo;向导。 <br />
　　新建一个项目，在窗体上放一个按钮，双击此按钮，加入以下代码： </span></p>
<p><span style="color: #0000ff">Private Sub Command1_Click() <br />
　　Open App.Path &amp; &quot;\temp.lnk&quot; For Output As #1 <br />
　　Close #1 '以上两句在程序所在目录建立一个临时文件 <br />
　　Shell &quot;Rundll32.exe AppWiz.Cpl，NewLinkHere &quot;&amp; App.Path &amp; &quot;\temp.lnk&quot; <br />
End Sub </span></p>
<p><span style="color: #0000ff">　　（注意：Shell语句中NewLinkHere后面跟着一个空格才是引号，否则将出错。） <br />
　　运行程序，按一下命令按钮，怎么样？&ldquo;创建快捷方式&rdquo;向导出现了，如果创建成功，快捷方式将取 代临时文件temp.lnk的位置，如果选取消，temp.lnk 也会自动消失。当然，您可以在硬盘的任意位置建立 temp.lnk。好，现在又可以为您的程序增添一项新功能了。Enjoy！ </span></p>
<p><span style="color: #0000ff">二. Rundll32.exe的用途 <br />
　　我们知道，用Shell语句只能调用可执行文件，即 exe、com、bat 和 pif 文件，有时我们想要调用其他一 些系统功能该怎么办呢？此时，Windows提供的 Rundll32.exe可大显身手了。下面我们来认识一下这些用法，也许会给您带来一点惊喜。<br />
　　1．要打开设置系统时间的控制面板文件 (Timedate.cpl),只需运行如下代码：<br />
　　Shell &quot;Rundll32.exe<br />
　　Shell32.dll,Control_RunDLL Timedate.cpl&quot; <br />
　　至于打开其他控制面板文件，相信您一定能够举一反三，尝试一下，换个文件名就成了。<br />
　　2．要运行某一快捷方式（*.lnk）则可以用以下代码：<br />
　　She11 &quot;Rundll32.exe url.dll, FileProtocolHandler X&quot; <br />
　　(X代表要运行的文件，包括路径，下同。)<br />
　　3. 也可以这样写来打开ActiveMovie控制：<br />
　　Shell &quot;RUNDLL32.EXE amovie.ocx，Rundll&quot;,1<br />
　　而用Shell &quot;RUNDLL32.EXE amovie.ocx，Rundll /play X&quot;,1 将直接播放媒体文件。<br />
　　4. Shell &quot;rundll32.exe desk.cpl，InstallScreenSaver X&rdquo;当然是安装屏幕保护啦，如果你写了一个屏幕保护程序，那么可以在安装程序中写上它，而不一定要装到system目录下。顺便提一下，VB不是自捞一个&ldquo;Application Setup Wizard&rdquo;么？它的VB源代码都在安装目录下的 &ldquo;\setupkit\setup1&rdquo;中放着呢，好好把它研究一下。 你完全能做出富有个性的安装程序来。 <br />
　　5.按住shift键，右击某一文件，菜单中会出现 &ldquo;打开方式&rdquo;选项，这也许已不是什么秘密。但现在， 用shell &quot;rundll32.exe shell32.dll OpenAs_RunDLL X&quot; 便能直接调用&ldquo;打开方式&rdquo;框。 <br />
　　6. 甚至能用这样一句来打印文件(包括HTML所 支持的所有文本与图像格式): <br />
　　Shell &quot;rundll32.exe MSHTML.DLL，PrintHTML X&rdquo;, 1 <br />
　　怎么样？是不是小有收获呢？这下，您一定会对 Rundll32.exe这个平时不起眼的文件另眼相待了，它可是系统运行必不可少的部件呢！其实 Shell＋Rundll32 还能调用其他许多系统功能，比如关于NetMeeting和Telnet方面的。如果您有兴趣，可以 到往册表的&ldquo;我的电脑\HKEY_CLASSES_ROOT\&rdquo;或&ldquo;我的电脑\HKEY_LOCAL_MACHINE\Software\CLASSES&rdquo;下 去看看，本文的内容大都是从那里&ldquo;抄&rdquo;来的。只要有足够的决心、信心、耐心，您一定能发现更多有价值的东西。Good luck!<br />
</span></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=117" /> 
	  <id>http://www.bycee.cn/default.asp?id=117</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[人的一生会遇上的四个人]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=12" label="奇趣生活" /> 
	  <updated>2009-08-25T13:50:21+08:00</updated>
	  <published>2009-08-25T13:50:21+08:00</published>
		  <summary type="html"><![CDATA[<p style="text-align: justify"><span style="color: #ff6600; line-height: 1.8em"><strong><font face="楷体_GB2312" size="4">人生就是为了找寻爱的过程，每个人的人生都要找到四个人。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一个是自己,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二个是你最爱的人，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第三个是最爱你的人，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第四个是共度一生的人.<br />
&nbsp;&nbsp;&nbsp;&nbsp;首先会遇到你最爱的人，然後体会到爱的感觉；<br />
&nbsp;&nbsp;&nbsp;&nbsp;因为了解被爱的感觉，所以才能发现最爱你的人；<br />
&nbsp;&nbsp;&nbsp;&nbsp;当你经历过爱人与被爱，学会了爱，才会知道什么是你需要的，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也才会找到最适合你，能够相处一辈子的人。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但很悲哀的，在现实生活中，这三个人通常不是同一个人；<br />
&nbsp;&nbsp;&nbsp;&nbsp;你最爱的，往往没有选择你；<br />
&nbsp;&nbsp;&nbsp;&nbsp;最爱你的，往往不是你最爱的；<br />
&nbsp;&nbsp;&nbsp;&nbsp;而最长久的，偏偏不是你最爱也不是最爱你的，<br />
&nbsp;&nbsp;&nbsp;&nbsp;只是在最适合的时间出现的那个人。<br />
&nbsp;&nbsp;&nbsp;&nbsp;你，会是别人生命中的第几个人呢？<br />
&nbsp;&nbsp;&nbsp;&nbsp;没有人是故意要变心的，他爱你的时候是真的爱你，<br />
&nbsp;&nbsp;&nbsp;&nbsp;可是他不爱你的时候也是真的不爱你了，<br />
&nbsp;&nbsp;&nbsp;&nbsp;他爱你的时候没有办法假装不爱你；<br />
&nbsp;&nbsp;&nbsp;&nbsp;同样的，他不爱你的时候也没有办法假装爱你 。<br />
&nbsp;&nbsp;&nbsp;&nbsp;当一个人不爱你要离开你，<br />
&nbsp;&nbsp;&nbsp;&nbsp;你要问自己还爱不爱他，<br />
&nbsp;&nbsp;&nbsp;&nbsp;如果你也不爱他了，千万别为了可怜的自尊而不肯离开；<br />
&nbsp;&nbsp;&nbsp;&nbsp;如果你还爱他，你应该会希望他过得幸福快乐，<br />
&nbsp;&nbsp;&nbsp;&nbsp;希望他跟真正爱的人在一起，绝不会阻止，<br />
&nbsp;&nbsp;&nbsp;&nbsp;你要是阻止他得到真正的幸福，就表示你已经不爱他了，<br />
&nbsp;&nbsp;&nbsp;&nbsp;而如果你不爱他，你又有什么资格指责他变心呢？<br />
&nbsp;&nbsp;&nbsp;&nbsp;爱不是占有，<br />
&nbsp;&nbsp;&nbsp;&nbsp;你喜欢月亮，不可能把月亮拿下来放在脸盆里，<br />
&nbsp;&nbsp;&nbsp;&nbsp;但月亮的光芒仍可照进你的房间。<br />
&nbsp;&nbsp;&nbsp;&nbsp;换句话说，你爱一个人，也可以用另一种方式拥有，<br />
&nbsp;&nbsp;&nbsp;&nbsp;让爱人成为生命里的永恒回忆，<br />
&nbsp;&nbsp;&nbsp;&nbsp;如果你真爱一个人，就要爱他原来的样子─爱他的好，也爱他的坏：<br />
&nbsp;&nbsp;&nbsp;&nbsp;爱他的优点，也爱他的缺点，<br />
&nbsp;&nbsp;&nbsp;&nbsp;绝不能因为爱他，就希望他变成自己所希望的样子，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;万一变不成就不爱他了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真正爱一个人是无法说出原因的，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你只知道无论何时何地、心情好坏，你都希望这个人陪著你；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真正的感情是两人能在最艰苦中相守，也就是没有丝毫要求。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 毕竟，感情必须付出，而不是只想获得；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分开是一种必然的考验，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你们感情不够稳固，只好认输，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 真爱是不会变成怨恨的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 两人在谈情说爱的时候，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最喜欢叫对方发誓，许下承诺我们为什么要对方发誓，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就是因为我们不相信对方，我们根本不相信情人，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而这些山盟海誓又很不切实际：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 海枯石烂、地老天荒，都不能改变我对你的爱!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 明知道海不会枯、石不会烂、地不会老、天不会荒；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就算会，也活不到那时候。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 许下诺言的时候千万注意，不要许下可以实现的诺言，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最好是承诺做不到的事，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 反正做不到的，随便说说也不要紧，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请记住：&rdquo;不可能实现的诺言最动人&rdquo;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在爱情里，说的是一套，做的是另一套；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 讲的人不相信，听的人也不相信。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你呢？找到了第几个？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 茫茫人海中，你遇见了谁？谁又遇见了你？</font></strong><br />
</span><wbr></wbr><wbr></wbr><wbr></wbr><!--v:3.2--></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=116" /> 
	  <id>http://www.bycee.cn/default.asp?id=116</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[从台民跪求军队救灾看中国台海两岸决然不同：解放军万岁]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=12" label="奇趣生活" /> 
	  <updated>2009-08-20T13:02:28+08:00</updated>
	  <published>2009-08-20T13:02:28+08:00</published>
		  <summary type="html"><![CDATA[<p>台湾罕见灾情引反思 媒体建议学习大陆抗洪救灾（搜索）</p>
<p align="center"><img alt="" src="http://www.bycee.cn/attachments/month_0908/22009820124359.jpg" /><br />
&nbsp;</p>
<p>　　台湾在这次莫拉克台风中的表现可谓是极其糟糕，证实的死亡人数是几十人，失踪的现在是几百人！</p>
<p>　　马英九被疲惫不堪的灾民包围，哭喊着要求派人去救援正在受灾被洪水围困的百姓，甚至当场下跪求救，镜头所到之处让人辛酸之极！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/u2009820124922.jpg" /></p>
<p>　　而在大陆对莫拉克台风的灾前动员处理即使撤离几百万人，以及受灾的程度，远没有台湾的严重，台风横扫大陆多个省份，有2000多万人受到灾害影响，但是目前只有几个人死亡，在浙江有1例死亡，竟然是驴友为抗击台风主动上危险地段被大浪卷走！</p>
<p>　　两岸的一个简单的台风比较，就立刻清楚的执政的巨大差异，无怪呼台湾老百姓反思，要求政府学习大陆的抗灾经验，很可惜，台湾学不了，大陆的军队是人民的，台湾的军队是所谓的国家的，大陆的军队在98年抗洪用人体在决口处累筑人墙，美国国防部用卫星拍摄到之后震惊无比，这样的军队是真正的不怕死军队，谁能匹敌呢！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/o2009820124940.jpg" /></p>
<p>　　2008年四川地震，呼啦就是10万军队上去，硬是将散落在各地的百姓救出，相比2005年美国那次飓风，美国军队是手拿大枪，开着运兵车端着机枪，认灾民在水中漂流，而去保卫什么财产不让抢劫，哪个时候，我特然看到，美国的军队不是为人民的，他们的军队在灾害面前，在受到灾难的百姓面前是将百姓的生命权至于财产权之下的，这样的军队，这样的国家，到底是个什么样的？这个是个很大的问号！</p>
<p>　　台湾一直是标榜民主自由的国家，但是在这次台风面前，我们发现所谓的民主自由是那么的不堪一击，台湾人可以上台北街头摇旗呐喊，为政党执政大动干戈，却在那么大的台风面前无力救援自己的百姓，使整个村庄在几秒只内被泥石流淹没，失踪了几百人，为什么不做灾害预案呢，为什么不提前撤离呢，为什么灾害发生后迟迟没有见到主要的救援力量出现呢，而要百姓对着镜头下跪请求救援呢，这样一个制度连生命威胁的时候都那么没有力量，他们的所谓自由民主有什么意义呢！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/12009820124957.jpg" /></p>
<p align="center">呜呼！</p>
<p>　　一次不大的台风暴雨彻底冲刷了尘土，让真实的面目浮现在世人面前！</p>
<p>　　民主？自由？人权？</p>
<p>　　当生命权都无法保障的时候，它们是那么的丑陋！</p>
<p><font color="#ff0000" size="3"><strong>对比一下汶川大地震的解放军</strong></font></p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/02009820125019.jpg" /></p>
<p>　　这是我收集整理的100张图片，谨以此纪念512国殇，记更多的人不会忘记这一天：共和国所经历的灾难，以及灾难面前国人表现出来的巨大勇气和空前团结。</p>
<p>　　图上的那位老师，在最后时刻，做出了一个护住学生的姿势，但是，她们都去了！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/u2009820125051.jpg" /></p>
<p align="center">在地震中痛失妻子的男子用绳子将妻子的尸体绑在背部，送她去太平间。在极大悲痛的折磨中，他努力要给予自己的妻子死后些许的尊严。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/e200982012517.jpg" /></p>
<p>　　四川江油县公安局一名普通的民警她自己才6个月大，同样需要母乳喂养的孩子交给了父母照料。却义务的为一些急需哺乳的地震灾区孤儿喂奶。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/n2009820125125.jpg" /></p>
<p align="center">怎一个惨字了得？</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/i2009820125148.jpg" /></p>
<p align="center">所谓众志成城，原来可以这样具体！</p>
<p>　　这个小孩子叫郎真，他被救出来后，在担架上给战士们敬了一个礼！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/j200982012521.jpg" /></p>
<p align="center">劫后余生的悲痛，无论大人，还是孩子。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/92009820125218.jpg" /></p>
<p align="center">那些影子，都在为一个生命而努力</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/e2009820125231.jpg" /></p>
<p align="center">有很多个许三多，有许多的不抛弃，不放弃！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/42009820125258.jpg" /></p>
<p align="center">我们活着，因为这一艘生命的船。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/f2009820125311.jpg" /></p>
<p align="center">孩子，长大了你要记得今天</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/02009820125323.jpg" /></p>
<p align="center">太累了。。。。。。几十个小时都在努力</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/l2009820125337.jpg" /></p>
<p align="center">疲惫。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/z2009820125348.jpg" /></p>
<p align="center">都累了！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/n200982012543.jpg" /></p>
<p align="center">阿婆，不要谢，我们是一家人！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/32009820125422.jpg" /></p>
<p align="center">四川人民谢谢您的爱！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/l2009820125436.jpg" /></p>
<p align="center">天堂里没有地震！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/f2009820125448.jpg" /></p>
<p align="center">老天，下辈子你做人来我做天！</p>
<p align="center">说好不分手，你为什么狠心地走了。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/b200982012554.jpg" /></p>
<p align="center">孩子，这个世界对不起您。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/h2009820125555.jpg" /></p>
<p align="center">角落里曾经有一个生命，水泥板里几乎不见钢筋。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/m200982012569.jpg" /></p>
<p align="center">孩子，别哭，你哭，我也想哭！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/z2009820125623.jpg" /></p>
<p align="center">那只手，显示的是生命的欲望</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/s2009820125637.jpg" /></p>
<p align="center">从死神手里抢回来的一条命。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/f2009820125649.jpg" /></p>
<p align="center">曾经那座弃满生机的城市，如果成为废墟。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/w200982012572.jpg" /></p>
<p align="center">都江堰新建小学，赵建中抱着9岁儿子的遗体，失声痛哭。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/g2009820125728.jpg" /></p>
<p align="center">我老公在这里，在这里，快救救他。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/g2009820125744.jpg" /></p>
<p align="center">老乡，你挺住。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/t200982012585.jpg" /></p>
<p>　　</p>
<p>一位村民因3位家人生死不明而焦急痛哭。这个时候，一辈子营建的家在哪里？</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/m2009820125825.jpg" /></p>
<p>　　遗体找到时，所有的希望都破灭了，当巨大的痛苦袭来，谁还能承受！</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/k2009820125837.jpg" /></p>
<p align="center">老爷子，你别哭。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/w2009820125848.jpg" /></p>
<p align="center">老天，你为什么要惩罚孩子</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/n200982012590.jpg" /></p>
<p align="center">三位困在大山里三天的灾民翻山越岭，艰难跋涉三十多公里终于走出大山后，情不自禁地抱头痛哭</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/h2009820125911.jpg" /></p>
<p align="center">对新人在石家庄火车站献血，祝福你们，好人一生平安。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/v2009820125924.jpg" /></p>
<p align="center">看到了吗？孩子们无助的目光</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/e2009820125943.jpg" /></p>
<p align="center">书包还在，人也天隔。。。。。。</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/b2009820125956.jpg" /></p>
<p align="center">日本搜救人员向遇难者遗体默哀</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/u200982013010.jpg" /></p>
<p align="center">11岁的张吉万背着3岁的妹妹走了10多个钟头逃出生天</p>
<p align="center"><br />
<img alt="" src="http://www.bycee.cn/attachments/month_0908/a200982013021.jpg" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=115" /> 
	  <id>http://www.bycee.cn/default.asp?id=115</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Excel Application对象应用大全]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=15" label="精品教程" /> 
	  <updated>2009-08-19T13:08:29+08:00</updated>
	  <published>2009-08-19T13:08:29+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="color: #0000ff"><strong>本文转自完美Excel</strong></span><br />
Application对象是Excel对象模型中最高层级的对象，代表Excel应用程序自身，也包含组成工作簿的许多部分，包括工作簿、工作表、单元格集合以及它们包含的数据。<br />
Application对象包含：</p>
<ul>
    <li>应用程序设置和选项，许多选项与&ldquo;选项&rdquo;对话框中的选项相同。</li>
    <li>返回顶级对象的方法，例如ActiveCell、ActiveSheet，等等。</li>
</ul>
<p>本文使用VBA代码示例简要介绍了与Application对象相关的经常使用的对象、方法和属性，其中一些成员能够改变用户与Excel应用程序交互的方式，还能够改变应用程序的外观和式样。熟悉Application对象能够让您扩展和调整Excel的功能，以满足自已的需求。<br />
本文主要介绍的内容如下：<br />
<span style="color: #0000ff"><strong>从Application对象中引用对象</strong></span><br />
<span style="color: #0000ff"><strong>Application对象相关的集合</strong></span></p>
<ul><font color="#0000ff">
    <p>&nbsp;</p>
    <ul>
        <li>AddIns集合</li>
        <li>Columns集合和Rows集合</li>
        <li>Dialogs集合</li>
        <li>Sheets集合
        <p>&nbsp;</p>
        </li>
    </ul>
    </font></ul>
    <p><span style="color: #0000ff"><strong>Application对象相关的属性</strong></span></p>
    <ul><font color="#0000ff">
        <p>&nbsp;</p>
        <ul>
            <li>ActiveCell属性</li>
            <li>ActiveChart属性</li>
            <li>ActiveSheet属性</li>
            <li>ActiveWindow属性</li>
            <li>ActiveWorkbook属性</li>
            <li>RangeSelection属性</li>
            <li>ScreenUpdating属性</li>
            <li>Selection属性</li>
            <li>StatusBar属性</li>
            <li>ThisWorkbook属性
            <p>&nbsp;</p>
            </li>
        </ul>
        </font></ul>
        <p><span style="color: #0000ff"><strong>Application对象相关的方法</strong></span></p>
        <ul><font color="#0000ff">
            <p>&nbsp;</p>
            <ul>
                <li>FindFile方法和Dialogs集合</li>
                <li>GetOpenFilename方法</li>
                <li>GetSaveAsFilename方法</li>
                <li>InputBox方法</li>
                <li>Run方法
                <p>&nbsp;</p>
                </li>
            </ul>
            </font></ul>
            <p><span style="color: #0000ff"><strong><span style="color: #0000ff">Application对象相关的事件</span></strong></span></p>
            <ul><font color="#0000ff">
                <p>&nbsp;</p>
                <ul>
                    <li>激活Application事件监视
                    <p>&nbsp;</p>
                    </li>
                </ul>
                </font></ul>
                <p><span style="color: #0000ff"><strong>使用Application对象执行其它任务</strong></span></p>
                <ul><font color="#0000ff">
                    <p>&nbsp;</p>
                    <ul>
                        <li>删除工作表而显示提示信息（DisplayAlerts属性）</li>
                        <li>无须提示用户而保存工作表（DisplayAlerts属性）</li>
                        <li>使用SendKeys方法发送信息到记事本</li>
                        <li>安排宏在指定的时间和间隔运行（OnTime方法）
                        <p>&nbsp;</p>
                        </li>
                    </ul>
                    </font></ul>
                    <p><span style="color: #0000ff"><strong>Application对象的其它一些属性和方法<br />
                    </strong></span></p>
                    <ul><font color="#0000ff">
                        <p>&nbsp;</p>
                        <ul>
                            <li>Caller属性</li>
                            <li>CutCopyMode属性</li>
                            <li>Evaluate方法</li>
                            <li>OnKey方法</li>
                            <li>ThisCell属性</li>
                            <li>WorksheetFunction属性</li>
                            <li>改变光标显示（Cursor属性）</li>
                            <li>获取或改变Excel窗口的状态或大小（WindowState属性）</li>
                            <li>获取系统信息</li>
                            <li>自动隐藏公式栏（DisplayFormulaBar属性）</li>
                            <li>将Excel全屏显示（DisplayFullScreen属性）</li>
                            <li>获取Excel启动文件夹的路径（StartupPath属性）</li>
                            <li>检测Excel的版本（Version属性）</li>
                            <li>打开最近使用过的文档（RecentFiles属性）</li>
                            <li>文件对话框操作（FileDialog属性）</li>
                            <li>改变Excel工作簿的名称（Caption属性）</li>
                            <li>调用Windows的计算器（ActivateMicrosoftApp方法）</li>
                            <li>暂时停止宏运行（Wait方法）</li>
                            <li>重新计算工作簿（Calculate方法）</li>
                            <li>控制函数重新计算（Volatile方法）</li>
                            <li>获取重叠区域（Intersect方法）</li>
                            <li>获取路径分隔符（PathSeparator属性）</li>
                            <li>快速移至指定位置（Goto方法）</li>
                            <li>关闭Excel（Quit方法）
                            <p>&nbsp;</p>
                            </li>
                        </ul>
                        </font></ul>
                        <p><span style="color: #0000ff"><span style="text-decoration: underline"><strong>从Application对象中引用对象</strong></span></span><br />
                        使用Application属性返回Application对象。在引用应用程序之后，要访问Application对象下面的对象，则依次下移对象模型层级。例如，下面的代码设置第一个工作簿的第一个工作表中的第一个单元格的值为20：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.Workbooks(1).Worksheets(1).Cells(1, 1) = 20</pre>
                        </div>
                        </div>
                        <p>要引用该单元格，上述代码以Application对象开始，移至第一个工作簿，然后到第一个工作表，最后到达单元格。<br />
                        下面的示例代码在另一个应用程序中创建一个Excel工作簿，然后打开该工作簿：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Set</span> xl = CreateObject(<span style="color: #800000">&quot;Excel.Sheet&quot;</span>)
xl.Application.Workbooks.<span style="color: #000080">Open</span> <span style="color: #800000">&quot;newbook.xls&quot;</span></pre>
                        </div>
                        </div>
                        <p>可以使用许多属性和方法返回最常用的用户界面对象，例如活动工作表（ActiveSheet属性），而无须Application对象限定。例如，下面的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.ActiveSheet.Name = <span style="color: #800000">&quot;Monthly Sales&quot;</span></pre>
                        </div>
                        </div>
                        <p>可以替换为：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
ActiveSheet.Name = <span style="color: #800000">&quot;Monthly Sales&quot;</span></pre>
                        </div>
                        </div>
                        <p>然而，在使用简短的引用时必须小心，必须已经选择了正确的对象。如果已经使用诸如Worksheet对象的Activate方法选择了合适的工作簿和工作表，那么能够使用下面的代码引用第一个单元格：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Cells(1, 1) = 20</pre>
                        </div>
                        </div>
                        <p>有一些实例必须使用Application限定引用。例如，OnTime方法、应用程序窗口的Width和Height属性。通常，处理Excel窗口外观的属性或者影响应用程序全部行为的属性需要Application限定，例如DisplayFormulaBar属性用于显示或隐藏公式栏。Calculation方法也需要限定。<br />
                        <br />
                        <span style="color: #0000ff"><span style="text-decoration: underline"><strong>Application对象相关的集合</strong></span></span><br />
                        本节介绍与Application对象相关的一些集合。<br />
                        <span style="color: #0000ff">AddIns集合</span><br />
                        AddIns集合代表当前在Excel中装载的所有加载项。就像遍历任何其它集合一样，可以列出应用程序中关于加载项的不同类型的信息。下面的示例列出当前在Excel中装载的加载项的路径和名称：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> ListAddIns()
    <span style="color: #000080">Dim</span> myAddin <span style="color: #000080">As</span> AddIn
    <span style="color: #000080">For</span> <span style="color: #000080">Each</span> myAddin <span style="color: #000080">In</span> AddIns
        MsgBox myAddin.FullName
    <span style="color: #000080">Next</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">Columns集合和Rows集合</span><br />
                        这些集合代表当前工作簿中的列和行，可以使用它们分别选择指定的列和行。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.Columns(4).<span style="color: #000080">Select</span></pre>
                        </div>
                        </div>
                        <p>上述语句选择D列，就像在工作表中单击该列的标题一样。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.Rows(5).<span style="color: #000080">Select</span></pre>
                        </div>
                        </div>
                        <p>上述语句选择第5行，就像在工作表中单击该行的行边一样。<br />
                        <span style="color: #0000ff">Dialogs集合<br />
                        </span>Dialogs集合由应用程序中所有的对话框组成。本文后面将详细介绍该集合。<br />
                        <span style="color: #0000ff">Sheets集合</span><br />
                        Sheets对象返回指定工作簿或活动工作簿中所有工作表的集合。Sheets集合包含Chart对象或Worksheet对象。下面的示例打印活动工作簿中所有工作表：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.Sheets.PrintOut</pre>
                        </div>
                        </div>
                        <p>下面的示例遍历工作簿中所有的工作表，并打印包含有数据的工作表：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
    <span style="color: #000080">For</span> iSheet = 1 <span style="color: #000080">To</span> Application.Sheets.Count
        <span style="color: #000080">If</span> <span style="color: #000080">Not</span> IsEmpty(Application.Sheets(iSheet).UsedRange) <span style="color: #000080">Then</span>
            Application.Sheets(iSheet).PrintOut copies:=1
        <span style="color: #000080">End</span> <span style="color: #000080">If</span>
    <span style="color: #000080">Next</span> iSheet</pre>
                        </div>
                        </div>
                        <p><strong><span style="color: #0000ff"><span style="color: #0000ff"><span style="text-decoration: underline">Application对象相关的属性</span></span><br />
                        </span></strong>在Excel 2007应用程序中，有大量的属性用来访问不同的对象。这里，只探讨经常使用的属性。</p>
                        <ul>
                            <li>ActiveCell</li>
                            <li>ActiveChart</li>
                            <li>ActiveSheet</li>
                            <li>ActiveWindow</li>
                            <li>ActiveWorkbook</li>
                            <li>RangeSelection</li>
                            <li>ScreenUpdating</li>
                            <li>Selection</li>
                            <li>StatusBar</li>
                            <li>ThisWorkbook</li>
                        </ul>
                        <p><span style="color: #0000ff">ActiveCell属性<br />
                        </span>Application对象的ActiveCell属性返回Range对象，代表活动工作簿的活动工作表中的活动单元格。如果没有指定对象限定，那么该属性返回活动窗口中的活动单元格。<br />
                        注意区分活动单元格和单元格选区。活动单元格是当前选区里的单个单元格，选区可能包含很多单元格，但仅有一个单元格是活动单元格。<br />
                        下面的示例改变活动单元格的字体格式。注意确保正在处理正确的单元格，Worksheets集合的Activate方法使工作表Sheet1为活动工作表。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
    Worksheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Activate
    <span style="color: #000080">With</span> ActiveCell.Font
        .Bold = <span style="color: #000080">True</span>
        .Italic = <span style="color: #000080">True</span>
    <span style="color: #000080">End</span> <span style="color: #000080">With</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">ActiveChart属性</span><br />
                        ActiveChart属性返回Chart对象，代表活动图表，无论该图表是嵌入式图表还是图表工作表。当嵌入式图表被选择或者被激活时，该图表是活动图表。下面的示例使用ActiveChart属性在工作表Monthly Sales中添加一个三维柱形图：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> AddChart()
    Charts.Add
    <span style="color: #000080">With</span> ActiveChart
        .ChartType = xl3DColumn
        .SetSourceData Source:=Sheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Range(<span style="color: #800000">&quot;B3:H15&quot;</span>)
        .Location Where:=xlLocationAsObject, Name:=<span style="color: #800000">&quot;Monthly Sales&quot;</span>
        .HasTitle = <span style="color: #000080">True</span>
        .ChartTitle.Characters.Text = <span style="color: #800000">&quot;Monthly Sales by Category&quot;</span>
    <span style="color: #000080">End</span> <span style="color: #000080">With</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">ActiveSheet属性</span><br />
                        ActiveSheet属性返回Worksheet对象，代表当前所选择的工作表（在顶部的工作表）。在一个工作簿中仅仅有一个工作表是活动工作表。下面的示例显示活动工作表的名字：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox <span style="color: #800000">&quot;活动工作表的名字是&quot;</span> &amp; ActiveSheet.Name</pre>
                        </div>
                        </div>
                        <p>下面的示例由用户指定复制活动工作表的次数并复制活动工作表，将复制的工作表放置到工作表Sheet1的前面：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> CopyActiveSheet()
    <span style="color: #000080">Dim</span> x <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>, numtimes <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    x = InputBox(<span style="color: #800000">&quot;请输入复制活动工作表的次数&quot;</span>)
    <span style="color: #000080">For</span> numtimes = 1 <span style="color: #000080">To</span> x
        <span style="color: #008000">'在工作表Sheet1的前面放置工作表副本
</span>        ActiveWorkbook.ActiveSheet.Copy _
            Before:=ActiveWorkbook.Sheets(<span style="color: #800000">&quot;Sheet1&quot;</span>)
    <span style="color: #000080">Next</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">ActiveWindow属性</span><br />
                        ActiveWindow属性返回Window对象，代表活动窗口（在顶部的窗口）。下面的示例显示活动窗口的名称（Caption属性）：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox <span style="color: #800000">&quot;活动窗口的名称是&quot;</span> &amp; ActiveWindow.Caption</pre>
                        </div>
                        </div>
                        <p>Caption属性返回活动窗口的名称，允许使用名称而不是索引号来更清楚地访问该窗口。<br />
                        下面的示例选择并打印工作表，然后对第二个工作表重复这一过程：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> PrintWorksheet()
    Application.ScreenUpdating = <span style="color: #000080">False</span>
    Sheets(<span style="color: #800000">&quot;Sales&quot;</span>).<span style="color: #000080">Select</span>
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=<span style="color: #000080">True</span>
    Sheets(<span style="color: #800000">&quot;Expenses&quot;</span>).<span style="color: #000080">Select</span>
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=<span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>在该示例中，您可能奇怪为什么将ScreenUpdating属性设置为False。当Excel执行一系列操作任务时，屏幕被更新并且被刷新许多次，这导致屏幕闪烁。设置ScreenUpdating属性为False消除这些闪烁。此外，因为计算机处理器无须为刷新屏幕而暂停，这能使大的应用程序运行得更快。<br />
                        <span style="color: #0000ff">ActiveWorkbook属性<br />
                        </span>ActiveWorkbook属性返回Workbook对象，代表活动窗口中的工作簿。下面的示例显示活动工作簿的名称：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox <span style="color: #800000">&quot;活动工作簿的名称是&quot;</span> &amp; ActiveWorkbook.Name</pre>
                        </div>
                        </div>
                        <p>下面的示例设置计算模式为手动，然后遍历并计算活动工作簿中的每个工作表：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> CalcBook()
    <span style="color: #000080">Dim</span> wks <span style="color: #000080">As</span> Worksheet
    Application.Calculate = xlManual
    <span style="color: #000080">For</span> <span style="color: #000080">Each</span> wks <span style="color: #000080">In</span> ActiveWorkbook.Worksheets
        wks.Calculate
    <span style="color: #000080">Next</span>
    <span style="color: #000080">Set</span> wks = <span style="color: #000080">Nothing</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">RangeSelection属性</span><br />
                        RangeSelection属性返回Range对象，代表在指定的窗口的工作表中所选择的单元格，即使是工作表中激活或选择的图形对象。下面的示例显示活动窗口的工作表中所选择的单元格的地址：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox Application.ActiveWindow.RangeSelection.Address</pre>
                        </div>
                        </div>
                        <p>当选择单元格区域时，RangeSelection属性和Selection对象代表相同的单元格区域。当选择图形时，RangeSelection属性返回以前的单元格选区。关于Selection属性的更多介绍参见下节。<br />
                        下面的示例显示单元格中头三个字符：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Range(<span style="color: #800000">&quot;A1&quot;</span>).<span style="color: #000080">Select</span>
MsgBox Left(ActiveWindow.RangeSelection, 3)</pre>
                        </div>
                        </div>
                        <p>下面的示例显示单元格名称的头三个字符：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Range(<span style="color: #800000">&quot;A1&quot;</span>).<span style="color: #000080">Select</span>
MsgBox Left(ActiveWindow.RangeSelection.Name.Name, 3)</pre>
                        </div>
                        </div>
                        <p>命令RangeSelection.Name.Name返回单元格名称。<br />
                        <span style="color: #0000ff">ScreenUpdating属性</span><br />
                        ScreenUpdating属性用于控制屏幕刷新，可将其值设置为True或False。通常，Excel开启了屏幕刷新（即该属性值为True），因此在代码执行时，Excel会随着代码的操作而不断更新屏幕显示，这样在运行处理涉及到多个工作表或单元格中的大量数据的代码（选择或激活对象）时，屏幕会不停闪烁，并且会占用CPU的处理时间，从而降低程序的运行速度。<br />
                        可以在程序代码的开始部分设置ScreenUpdating属性为False，即Application.ScreenUpdating=False，以关闭屏幕刷新，这样不仅能够使代码运行更快，而且使得界面对用户更为友好。在程序结束前，将该属性设置为True，以恢复Excel对屏幕更新的控制。<br />
                        然而，在宏运行的过程中，如果需要显示用户窗体或者内置对话框，建议先恢复屏幕刷新，否则拖动用户窗体时，会在屏幕上产生橡皮擦的效果。当然，在显示该对象后，可以重新关闭屏幕刷新。<br />
                        <span style="color: #0000ff">Selection属性<br />
                        </span>Selection属性返回活动窗口中所选择的对象。例如，对于单元格，该属性返回Range对象；对于图表，该属性返回Chart对象。如果使用该属性时没有限定引用，则等价于Application.Selection。<br />
                        下面的示例清除工作表Sheet1中的选区（假设选区是单元格区域）：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Worksheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Activate
Selection.Clear</pre>
                        </div>
                        </div>
                        <p>下面的示例在变量NumRows中存储所选行的总数：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
    numrows = 0
    <span style="color: #000080">For</span> <span style="color: #000080">Each</span> area <span style="color: #000080">In</span> Selection.Areas
        numrows = numrows + area.Rows.Count
    <span style="color: #000080">Next</span> area</pre>
                        </div>
                        </div>
                        <p>下面的示例统计所选区域中单元格的数量，并在消息框中显示结果：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> Count_Selection()
    <span style="color: #000080">Dim</span> cell <span style="color: #000080">As</span> <span style="color: #000080">Object</span>
    <span style="color: #000080">Dim</span> count <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    count = 0
    <span style="color: #000080">For</span> <span style="color: #000080">Each</span> cell <span style="color: #000080">In</span> Selection
        count = count + 1
    <span style="color: #000080">Next</span> cell
    MsgBox count &amp; <span style="color: #800000">&quot;项被选择&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>下面的示例确保在输入数据之前选择的是工作表：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> EnterDataInWorksheet()
    <span style="color: #000080">If</span> TypeName(ActiveSheet) &lt;&gt; <span style="color: #800000">&quot;Worksheet&quot;</span> _
        <span style="color: #000080">Or</span> TypeName(Selection) &lt;&gt; <span style="color: #800000">&quot;Range&quot;</span> <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;本程序仅用于单元格区域&quot;</span>, vbCritical
        <span style="color: #000080">Exit</span> <span style="color: #000080">Sub</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
    Range(<span style="color: #800000">&quot;A1&quot;</span>).Value = 20
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">StatusBar属性<br />
                        </span>StatusBar属性返回或设置状态栏中的文本。该属性允许改变显示在Excel窗口底部的状态栏中的信息，这特别有助于使用户了解需要花时间完成的操作处理的进度。因此，状态栏是一种告知用户当前程序信息的极好方式，并且状态栏不会干扰用户，也易被开发者利用。<br />
                        如果Excel控制状态栏，则StatusBar属性返回False。此外，要恢复缺省的状态栏文本，只需设置该属性为False，即使隐藏了状态栏。<br />
                        例如，下面的示例将现在正在处理的文件赋值给状态栏：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> test()
    <span style="color: #000080">Dim</span> FileNum <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    FileNum = 0
    <span style="color: #000080">For</span> <span style="color: #000080">Each</span> file <span style="color: #000080">In</span> Files
        Application.StatusBar = <span style="color: #800000">&quot;现在正在处理文件&quot;</span> &amp; FileNum
        FileNum = FileNum + 1
    <span style="color: #000080">Next</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>然后，当程序结束时，使用下面的语句将状态栏恢复为正常：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.StatusBar = <span style="color: #000080">False</span></pre>
                        </div>
                        </div>
                        <p>这是通知Excel并清空状态栏的最简单的方式。除非重新启动Excel，否则状态栏中会一直保持着使用Application.StatusBar所显示的文本，因此应该在合适的地方使用Application.StatusBar = False语句，尤其是应该考虑发生错误时如何恢复状态栏。另外，在使用状态栏时，需要选择一个合适的更新间隔，使之既不会影响程序性能又能为用户提供有用的信息。<br />
                        可以创建自已的过程来使用StatusBar属性，以显示宏或其它过程的进度：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> ShowStatusBarProgress()
    <span style="color: #000080">Dim</span> i <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
    <span style="color: #000080">Dim</span> pctDone <span style="color: #000080">As</span> <span style="color: #000080">Double</span>
    <span style="color: #000080">Dim</span> numSquares <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
&nbsp;
    <span style="color: #000080">Const</span> MAXSQR <span style="color: #000080">As</span> <span style="color: #000080">Long</span> = 15
&nbsp;
    <span style="color: #000080">For</span> i = 1 <span style="color: #000080">To</span> 30
        pctDone = i / 30
        numSquares = pctDone * MAXSQR
        Application.StatusBar = Application.WorksheetFunction.Rept(Chr(60), numSquares)
        Application.Wait Now + TimeSerial(0, 0, 1)
    <span style="color: #000080">Next</span> i
&nbsp;
    Application.StatusBar = <span style="color: #000080">False</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>本示例随着程序的运行逐渐显示由常量MAXSQR定义的15个小于符号，小于符号使用ASCⅡ字符60生成。本示例没有指示过程执行多长时间，只是显示了执行的进度。Wait方法摸拟宏占用的执行时间。<br />
                        要在VBA代码中使用状态栏，首先确定在用户界面中是否显示了状态栏（因为用户极有可能关闭了显示状态栏的选项），并且在状态栏使用完毕后，应将其恢复到用户原先的设置，因此在程序开始前，将状态栏的信息保存到一个变量中：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
bStatusBarInfo=Application.DisplayStatusBar</pre>
                        </div>
                        </div>
                        <p>然后，将DisplayStatusBar属性设置为True，以确保显示状态栏。在程序结束前，将状态栏恢复到原先的设置：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.DisplayStatusBar=bStatusBarInfo</pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">ThisWorkbook属性</span><br />
                        ThisWorkbook属性返回Workbook对象，代表当前正运行的宏所在的工作簿。该属性允许加载项引用包含代码的工作簿。ActiveWorkbook属性在该实例中不会工作，因为活动工作簿可能不是包含加载项代码的工作簿。换句话说，ActiveWorkbook属性不会返回加载项工作簿，它返回调用加载项的工作簿。如果从VB代码创建了一个加载项，应该使用ThisWorkbook属性限定必须在编译到该加载项的工作簿中运行的语句。<br />
                        下面的示例关闭包含示例代码的工作簿，如果修改了该工作簿，则不会保存修改。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
ThisWorkbook.<span style="color: #000080">Close</span> SaveChanges:=<span style="color: #000080">False</span></pre>
                        </div>
                        </div>
                        <p>下面的示例遍历每个打开的工作簿并将其关闭，然后关闭包含该代码的工作簿。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> oExcel <span style="color: #000080">As</span> Excel.Application
<span style="color: #000080">Private</span> wbk <span style="color: #000080">As</span> Excel.Workbook
&nbsp;
<span style="color: #000080">Sub</span> CloseOpenWrkBks()
    <span style="color: #000080">Dim</span> wrkb <span style="color: #000080">As</span> Workbook
    <span style="color: #000080">For</span> <span style="color: #000080">Each</span> wbk <span style="color: #000080">In</span> Application.Workbooks
        <span style="color: #000080">If</span> wrkb.Name &lt;&gt; ThisWorkbook.Name <span style="color: #000080">Then</span>
            wbk.<span style="color: #000080">Close</span> <span style="color: #000080">True</span>
        <span style="color: #000080">End</span> <span style="color: #000080">If</span>
    <span style="color: #000080">Next</span> wbk
    ThisWorkbook.<span style="color: #000080">Close</span> <span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff"><span style="text-decoration: underline"><strong>Application对象相关的方法<br />
                        </strong></span></span>下面探讨Application对象经常使用的一些方法。<br />
                        <span style="color: #0000ff">FindFile方法和Dialogs集合</span><br />
                        与GetOpenFilename方法不同，FileFind方法显示&ldquo;打开&rdquo;对话框并允许用户打开文件。如果成功打开文件，那么该方法返回True；如果用户取消了该对话框，那么该方法返回False。<br />
                        下面的示例显示一条消息，告诉用户打开一个指定的文件，然后显示&ldquo;打开&rdquo;对话框。如果用户不能够打开该文件，则显示一条消息。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> OpenFile1()
    <span style="color: #000080">Dim</span> bSuccess <span style="color: #000080">As</span> <span style="color: #000080">Boolean</span>
    MsgBox <span style="color: #800000">&quot;请定位到MonthlySales.xls文件.&quot;</span>
    bSuccess = Application.FindFile
    <span style="color: #000080">If</span> <span style="color: #000080">Not</span> bSuccess <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;该文件没有打开.&quot;</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>也可以使用Dialogs集合打开特定的对话框来完成相同的操作。使用Dialogs集合的优势之一是使用Show方法，可以传递参数修改内置对话框的缺省行为。例如，xlDialogOpen的参数为：file_text、update_links、read_only、format、prot_pwd、write_res_pwd、ignore_rorec、file_origin、custom_delimit、add_logical、editable、file_access、notify_logical、converter。<br />
                        注：要找到特定对话框的参数，在Excel帮助的&ldquo;内置对话框参数列表&rdquo;中查找相应的对话框常量。<br />
                        下面的示例显示在文件名框中带有Book1.xlsm的&ldquo;打开&rdquo;对话框，允许用户显示缺省文件而不必选择文件。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> OpenFile2()
    Application.Dialogs(XlBuiltInDialog.xlDialogOpen).Show arg1:=<span style="color: #800000">&quot;Book1.xlsm&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>Dialogs集合的优点在于，可以使用它来显示任何的Excel对话框（大约有250个）。通过下述步骤可以找到对话框完整列表。<br />
                        （查找对话框集合的成员列表）<br />
                        1、打开VBE。<br />
                        2、单击&ldquo;查看&mdash;&mdash;对象浏览器&rdquo;或者按F2键，显示&ldquo;对象浏览器&rdquo;。<br />
                        3、在搜索框中输入xlDialog。<br />
                        4、单击&ldquo;搜索&rdquo;按钮。<br />
                        对Excel 2007而言，可以使用CommandBar对象来执行功能区中的命令，例如，下面的语句显示&ldquo;定位&rdquo;对话框：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.CommandBars.ExecuteMso (<span style="color: #800000">&quot;GoTo&quot;</span>)</pre>
                        </div>
                        </div>
                        <p>ExecuteMso方法执行由idMso参数标识的控件。idMso参数的取值可以查找网上资源。<br />
                        下面的语句显示&ldquo;设置单元格格式&rdquo;对话框中的&ldquo;字体&rdquo;选项卡：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.CommandBars.ExecuteMso (<span style="color: #800000">&quot;FormatCellsFontDialog&quot;</span>)</pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">GetOpenFilename方法</span><br />
                        GetOpenFilename方法显示标准的&ldquo;打开&rdquo;对话框并从用户处获取文件名称，但不真正打开任何文件，而是以字符串返回用户选择的文件名及其路径。那么，您可以利用该字符串完成所需要的操作，例如可以传递返回的结果到OpenText方法。下面是GetOpenFilename方法的语法（所有参数都是可选的）：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect)</pre>
                        </div>
                        </div>
                        <p>参数FileFilter是一个字符串，规定筛选条件（例如，*.txt，*.xla），在&ldquo;打开&rdquo;文件对话框中只显示与筛选条件相匹配的文件，默认为&ldquo;所有文件(*.*),*.*&rdquo;。参数FilterIndex指定缺省的文件筛选条件的索引值，从1到参数FileFilter中指定的筛选数，默认使用索引值为1的文件筛选条件。参数Title指定对话框的标题，默认显示&ldquo;打开&rdquo;。参数ButtonText仅用于Macintosh计算机。参数MultiSelect是一个Boolean值，指定能否选择多个文件，默认仅能够选择单个文件。<br />
                        下面的示例显示在文件类型中设置为文本文件（*.txt）的&ldquo;打开&rdquo;对话框，然后显示带有用户选择的信息的消息框。注意，文件并没有被打开。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
    <span style="color: #000080">Dim</span> fileToOpen <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    fileToOpen = Application.GetOpenFilename(<span style="color: #800000">&quot;文本文件(*.txt),*.txt&quot;</span>)
    <span style="color: #000080">If</span> fileToOpen &lt;&gt; <span style="color: #800000">&quot;&quot;</span> <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;打开&quot;</span> &amp; fileToOpen
    <span style="color: #000080">End</span> <span style="color: #000080">If</span></pre>
                        </div>
                        </div>
                        <p>下面的示例获取多个工作簿：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #008000">'作者:Steven M. Hansen
</span><span style="color: #000080">Sub</span> TestGetFiles()
    <span style="color: #000080">Dim</span> nIndex <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    <span style="color: #000080">Dim</span> vFiles <span style="color: #000080">As</span> <span style="color: #000080">Variant</span>
    <span style="color: #000080">Dim</span> strFileName <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #008000">'获取多个Excel文件
</span>    vFiles = GetExcelFiles(<span style="color: #800000">&quot;测试GetExcelFiles函数&quot;</span>)
    <span style="color: #008000">'确保没有取消对话框.
</span>    <span style="color: #008000">'如果用户取消对话框,函数返回False,而不是数组
</span>    <span style="color: #000080">If</span> <span style="color: #000080">Not</span> IsArray(vFiles) <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;没有选择文件.&quot;</span>
        <span style="color: #000080">Exit</span> <span style="color: #000080">Sub</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
    <span style="color: #008000">'如果没有取消对话框,则遍历文件
</span>    <span style="color: #000080">For</span> nIndex = 1 <span style="color: #000080">To</span> <span style="color: #000080">UBound</span>(vFiles)
        strFileName = strFileName &amp; vbCrLf &amp; vFiles(nIndex)
    <span style="color: #000080">Next</span> nIndex
    <span style="color: #008000">'显示用户所选择的文件名称
</span>    MsgBox <span style="color: #800000">&quot;用户已选择的文件如下:&quot;</span> &amp; vbCrLf &amp; strFileName
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #008000">'允许选择多个文件
</span><span style="color: #008000">'返回含有文件名称的数组
</span><span style="color: #000080">Function</span> GetExcelFiles(sTitle <span style="color: #000080">As</span> <span style="color: #000080">String</span>) <span style="color: #000080">As</span> <span style="color: #000080">Variant</span>
    <span style="color: #000080">Dim</span> sFilter <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #000080">Dim</span> bMultiSelect <span style="color: #000080">As</span> <span style="color: #000080">Boolean</span>
    sFilter = <span style="color: #800000">&quot;Excel工作簿(*.xlsx),*.xlsx&quot;</span>
    bMultiSelect = <span style="color: #000080">True</span>
    GetExcelFiles = Application.GetOpenFilename(FileFilter:=sFilter, _
                    Title:=sTitle, MultiSelect:=bMultiSelect)
<span style="color: #000080">End</span> <span style="color: #000080">Function</span></pre>
                        </div>
                        </div>
                        <p>当将GetOpenFilename方法的参数MultiSelect设置为True时，如果用户选择了文件，那么将返回一个变体类型的数组，且数组索引值基于1而不是0；如果用户取消了选择文件，那么返回False。在TestGetFiles过程的代码中，使用IsArray函数测试返回值是否是数组。如果使用vFiles=False来判断的话，当用户选择了文件时，由于返回的值为数组，则会导致运行时错误：类型不匹配。<br />
                        <span style="color: #0000ff">GetSaveAsFilename方法</span><br />
                        GetSaveAsFilename方法显示&ldquo;另存为&rdquo;对话框，允许用户指定一个文件名和需要保存文件的位置，但是实际上并没有保存文件。GetSaveAsFilename方法的语法如下（所有参数都是可选的）：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.GetSaveAsFilename(InitialFilename,FileFilter,FilterIndex,Title,ButtonText)</pre>
                        </div>
                        </div>
                        <p>参数InitialFilename为指定文件名的字符串，默认为活动工作簿的名称，若不需要指定初始文件名，则将其设置为空字符串（&rdquo;&quot;）；参数FileFilter是表示筛选条件的字符串，在&ldquo;另存为&rdquo;对话框只显示与筛选条件相匹配的文件，默认为&ldquo;所有文件(*.*),*.*&rdquo;；参数FilterIndex用来指定缺省的文件筛选条件的索引值，默认使用索引值为1的文件筛选条件；参数Title指定显示对话框标题的字符串文本，默认显示&ldquo;另存为&rdquo;；参数ButtonText仅用于Macintosh计算机。<br />
                        下面介绍一个综合示例，是Steven M. Hansen编写的，从完整的文件名字符串中分解出文件路径和文件名。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> TestBreakdownName()
    <span style="color: #000080">Dim</span> sPath <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #000080">Dim</span> sName <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #000080">Dim</span> sFileName <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #000080">Dim</span> sMsg <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    sFileName = Application.GetSaveAsFilename
    BreakdownName sFileName, sName, sPath
    sMsg = <span style="color: #800000">&quot;文件名是:&quot;</span> &amp; sName &amp; vbCrLf
    sMsg = sMsg &amp; <span style="color: #800000">&quot;文件路径是:&quot;</span> &amp; sPath
    MsgBox sMsg, vbOKOnly
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #000080">Function</span> GetShortName(sLongName <span style="color: #000080">As</span> <span style="color: #000080">String</span>) <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #000080">Dim</span> sPath <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    <span style="color: #000080">Dim</span> sShortName <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    BreakdownName sLongName, sShortName, sPath
    GetShortName = sShortName
<span style="color: #000080">End</span> <span style="color: #000080">Function</span>
&nbsp;
<span style="color: #000080">Sub</span> BreakdownName(sFullName <span style="color: #000080">As</span> <span style="color: #000080">String</span>, _
                  <span style="color: #000080">ByRef</span> sName <span style="color: #000080">As</span> <span style="color: #000080">String</span>, _
                  <span style="color: #000080">ByRef</span> sPath <span style="color: #000080">As</span> <span style="color: #000080">String</span>)
    <span style="color: #000080">Dim</span> nPos <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    <span style="color: #008000">'找出文件名从哪里开始
</span>    nPos = FileNamePosition(sFullName)
    <span style="color: #000080">If</span> nPos &gt; 0 <span style="color: #000080">Then</span>
        sName = Right(sFullName, Len(sFullName) - nPos)
        sPath = Left(sFullName, nPos - 1)
    <span style="color: #000080">Else</span>
        <span style="color: #008000">'无效的文件名
</span>    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #008000">'返回提供的完整文件名中文件名的位置或首字符索引值
</span><span style="color: #008000">'完整文件名包括路径和文件名
</span><span style="color: #008000">'例如:FileNamePosition(&quot;C:\Testing\Test.xlsx&quot;)=11
</span><span style="color: #000080">Function</span> FileNamePosition(sFullName <span style="color: #000080">As</span> <span style="color: #000080">String</span>) <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    <span style="color: #000080">Dim</span> bFound <span style="color: #000080">As</span> <span style="color: #000080">Boolean</span>
    <span style="color: #000080">Dim</span> nPosition <span style="color: #000080">As</span> <span style="color: #000080">Integer</span>
    bFound = <span style="color: #000080">False</span>
    nPosition = Len(sFullName)
    <span style="color: #000080">Do</span> <span style="color: #000080">While</span> bFound = <span style="color: #000080">False</span>
        <span style="color: #008000">'确保不是零长度字符串
</span>        <span style="color: #000080">If</span> nPosition = 0 <span style="color: #000080">Then</span> <span style="color: #000080">Exit</span> <span style="color: #000080">Do</span>
        <span style="color: #008000">'从右开始查找第一个&quot;\&quot;
</span>        <span style="color: #000080">If</span> Mid(sFullName, nPosition, 1) = <span style="color: #800000">&quot;\&quot;</span> <span style="color: #000080">Then</span>
            bFound = <span style="color: #000080">True</span>
        <span style="color: #000080">Else</span>
            <span style="color: #008000">'从右至左
</span>            nPosition = nPosition - 1
        <span style="color: #000080">End</span> <span style="color: #000080">If</span>
    <span style="color: #000080">Loop</span>
    <span style="color: #000080">If</span> bFound = <span style="color: #000080">False</span> <span style="color: #000080">Then</span>
        FileNamePosition = 0
    <span style="color: #000080">Else</span>
        FileNamePosition = nPosition
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Function</span></pre>
                        </div>
                        </div>
                        <p>除了运行TestBreakdownName过程获取文件名和文件路径外，还可以使用GetShortName函数仅获取文件名。此外，在Sub过程BreakdownName中使用了ByRef参数，即通过引用传递参数，这样传递给子过程的参数改变后，调用子过程的主过程中相应的参数也随之改变。<br />
                        <span style="color: #0000ff">InputBox方法</span><br />
                        InputBox方法提供了一种程序与用户之间进行简单的交互的方式，允许我们从用户处获得信息。该方法将显示一个对话框，提示用户输入某值。通过指定希望用户输入的数据类型，InputBox方法能够进行数据验证。InputBox方法的语法如下：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextID,<span style="color: #000080">Type</span>)</pre>
                        </div>
                        </div>
                        <p>其中：参数Prompt是在对话框中显示的消息。这里，可以提示用户您希望用户输入的数据类型。该参数是唯一的必需参数。<br />
                        参数Title是对话框顶部显示的标题。缺省使用应用程序名称。<br />
                        参数Default是对话框最初显示时的缺省值。<br />
                        参数Left和Top用于指定对话框的位置，这些值相对于屏幕的左上角且以磅为单位。如果忽略，则对话框将水平居中且距屏幕顶约1/3处。<br />
                        参数HelpFile和HelpContextId指定帮助文件，如果使用了这两个参数，那么在对话框中将出现帮助按钮。<br />
                        参数Type指定需要返回的数据类型。缺省为文本，允许的类型列于表1。<br />
                        <br />
                        <font size="2">注意，如果Type为8，那么必须使用Set语句将结果赋值给Range对象，如下面的代码所示：</font></p>
                        <p>
                        <table border="1">
                            <caption>表1：InputBox方法返回的数据类型</caption>
                            <tbody>
                                <tr bgcolor="#dcdcdc">
                                    <th>值</th>
                                    <th>类型</th>
                                </tr>
                                <tr>
                                    <td>0</td>
                                    <td>公式。公式作为字符串被返回。这是仅有的必需的参数。</td>
                                </tr>
                                <tr>
                                    <td>1</td>
                                    <td>数值。也可以包括返回值的公式。</td>
                                </tr>
                                <tr>
                                    <td>2</td>
                                    <td>文本（字符串）</td>
                                </tr>
                                <tr>
                                    <td>4</td>
                                    <td>逻辑值（True或False）</td>
                                </tr>
                                <tr>
                                    <td>8</td>
                                    <td>单元格引用，作为Range对象</td>
                                </tr>
                                <tr>
                                    <td>16</td>
                                    <td>错误值，例如#N/A</td>
                                </tr>
                                <tr>
                                    <td>64</td>
                                    <td>值列表</td>
                                </tr>
                            </tbody>
                        </table>
                        </p>
                        <p>&nbsp;</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Set</span> myRange = Application.InputBox(Prompt:=<span style="color: #800000">&quot;示例&quot;</span>, <span style="color: #000080">Type</span>:=8)</pre>
                        </div>
                        </div>
                        <p>如果希望允许输入多种数据类型，那么可以使用上表中的任意数值组合。例如，如果要显示一个可以接受文本或数值的输入框，则可以将type的值设置为3（即1+2的结果）。如果输入了错误类型的数据，则显示错误消息并提示再次输入数据。如果单击&ldquo;取消&rdquo;按钮，则返回False。<br />
                        下面的示例提示用户输入希望打印活动工作表的份数（注意，type指定希望输入的是一个数值）：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> PrintActiveSheet()
    <span style="color: #000080">Dim</span> TotalCopies <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, NumCopies <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
    <span style="color: #000080">Dim</span> sPrompt <span style="color: #000080">As</span> <span style="color: #000080">String</span>, sTitle <span style="color: #000080">As</span> <span style="color: #000080">String</span>
&nbsp;
    sPrompt = <span style="color: #800000">&quot;您想要多少副本?&quot;</span>
    sTitle = <span style="color: #800000">&quot;打印活动工作表&quot;</span>
    TotalCopies = Application.InputBox(Prompt:=sPrompt, Title:=sTitle, Default:=1, <span style="color: #000080">Type</span>:=1)
&nbsp;
    <span style="color: #000080">For</span> NumCopies = 1 <span style="color: #000080">To</span> TotalCopies
        ActiveSheet.PrintOut
    <span style="color: #000080">Next</span> NumCopies
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>如果将InputBox方法的返回值赋给一个Variant型变量，则可以检测该值是否为False。如果要返回单元格区域，则使用像下面的代码会更好：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> GetRange()
    <span style="color: #000080">Dim</span> rng <span style="color: #000080">As</span> Range
    <span style="color: #000080">On</span> <span style="color: #000080">Error</span> <span style="color: #000080">Resume</span> <span style="color: #000080">Next</span>
    <span style="color: #000080">Set</span> rng = Application.InputBox(Prompt:=<span style="color: #800000">&quot;输入单元格区域&quot;</span>, <span style="color: #000080">Type</span>:=8)
    <span style="color: #000080">If</span> rng <span style="color: #000080">Is</span> <span style="color: #000080">Nothing</span> <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;操作取消&quot;</span>
    <span style="color: #000080">Else</span>
        rng.<span style="color: #000080">Select</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>此时，必须使用Set语句将Range对象赋值给某对象变量，如果用户单击&ldquo;取消&rdquo;按钮则返回值False，Set语句将失败并提示运行时错误。使用On Error Resume Next语句避免运行时错误，然后检查是否产生了一个有效的区域。如果用户单击&ldquo;确定&rdquo;按钮，那么InputBox方法检查内置类型以确保将返回有效的区域，因此空区域表明单击了&ldquo;取消&rdquo;按钮。<br />
                        <span style="color: #0000ff">Run方法</span><br />
                        Run方法执行一个宏或调用一个函数。可以使用该方法运行由VBA或Excel宏语言编写的宏，或者运行动态链接库（DLL）里的函数或Excel加载项（XLL）。XLL是使用任何支持创建DLLs的编译器为Excel创建的加载项。Run方法的语法为：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Run(Macro,Arg1,&hellip;,Arg30)</pre>
                        </div>
                        </div>
                        <p>参数Macro是要执行的宏或函数的名称，参数Arg1至Arg30是需要传递给宏或函数的一些参数。<br />
                        下面的示例使用Run方法调用一个过程，设置单元格区域中单元格的字体为粗体。当然，也可以使用Call方法获得相同的结果。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> UseRunMethod()
    <span style="color: #000080">Dim</span> wks <span style="color: #000080">As</span> Worksheet
    <span style="color: #000080">Dim</span> rng <span style="color: #000080">As</span> Range
&nbsp;
    <span style="color: #000080">Set</span> wks = Worksheets(<span style="color: #800000">&quot;Sheet2&quot;</span>)
    <span style="color: #000080">Set</span> rng = wks.Range(<span style="color: #800000">&quot;A1:A10&quot;</span>)
    Application.Run <span style="color: #800000">&quot;MyProc&quot;</span>, rng
&nbsp;
    <span style="color: #008000">'也能够使用下面的语句完成相同的任务
</span>    <span style="color: #008000">'Call MyProc(rng)
</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #000080">Sub</span> MyProc(rng <span style="color: #000080">As</span> Range)
    <span style="color: #000080">With</span> rng.Font
        .Bold = <span style="color: #000080">True</span>
    <span style="color: #000080">End</span> <span style="color: #000080">With</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff"><span style="text-decoration: underline"><strong>Application对象相关的事件<br />
                        </strong></span></span>Application对象也有一些事件，能够用于监视整个Excel应用程序的行为。要使用Application事件，必须启用事件监视。<br />
                        <span style="color: #0000ff">激活Application事件监视</span><br />
                        1、单击&ldquo;插入&mdash;&mdash;类模块&rdquo;，创建一个类。<br />
                        2、在属性中，将类的名称改为AppEventClass。<br />
                        3、在类的代码窗口，添加下面的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Public</span> <span style="color: #000080">WithEvents</span> Appl <span style="color: #000080">As</span> Application</pre>
                        </div>
                        </div>
                        <p>现在，能够在应用程序中运用应用程序级事件。<br />
                        4、在代码窗口顶部左侧的对象列表中，选择Appl。<br />
                        5、在代码窗口顶部右侧的过程列表中，选择WorkbookOpen。此时，将为Appl_WorkbookOpen过程插入一对占位符。<br />
                        6、在过程中添加下面的语句：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Appl_WorkbookOpen(<span style="color: #000080">ByVal</span> Wb <span style="color: #000080">As</span> Workbook)
    MsgBox <span style="color: #800000">&quot;已打开工作簿.&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>7、重复上面的步骤插入Appl_WorkbookBeforeClose事件，并添加下面的语句：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Appl_WorkbookBeforeClose(<span style="color: #000080">ByVal</span> Wb <span style="color: #000080">As</span> Workbook, Cancel <span style="color: #000080">As</span> <span style="color: #000080">Boolean</span>)
    MsgBox <span style="color: #800000">&quot;关闭工作簿.&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>8、接下来，创建一个变量用于引用类模块中创建的Application对象。在工程资源管理器中，双击ThisWorkbook打开代码窗口。<br />
                        9、添加下面的语句。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Dim</span> ApplicationClass <span style="color: #000080">As</span> <span style="color: #000080">New</span> AppEventClass</pre>
                        </div>
                        </div>
                        <p>通过在ThisWorkbook代码窗口添加下面的语句，创建所声明的对象对Application对象的连接：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Workbook_Open()
    <span style="color: #000080">Set</span> ApplicationClass.Appl = Application
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>10、保存并关闭该工作簿。<br />
                        11、现在，测试代码。打开该工作簿，将触发Appl_WorkbookOpen事件，显示相应的信息框。<br />
                        12、关闭该工作簿，将触发Appl_WorkbookBeforeClose事件，显示相应的信息框。<br />
                        13、切换回AppEventClass类模块并单击过程列表显示能够用于监控应用程序行为的一系列事件。<br />
                        理解这些事件如何被触发以及事件的顺序对理解应用程序是重要的。在类模块中添加其他的事件并插入消息框，然后试验不同的行为来看看何时触发某特定的事件。<br />
                        <br />
                        <span style="color: #0000ff"><span style="text-decoration: underline"><strong>使用Application对象执行其它任务</strong></span></span><br />
                        除了Application对象中最常用的对象外，您可能希望在Excel应用程序中执行一些其他任务。下面我们就来探讨这方面的内容。<br />
                        <span style="color: #0000ff">删除工作表而显示提示信息（DisplayAlerts属性）</span><br />
                        下面的示例首先关闭询问是否保存工作表的任何消息，接着删除工作表并打开警告消息。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> DeleteSheet()
    Application.DisplayAlerts = <span style="color: #000080">False</span>
    ActiveSheet.Delete
    Application.DisplayAlerts = <span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>上述示例代码中使用了DisplayAlerts属性，将其值设置为False以自动执行Excel警告对话框中默认按钮相关的操作。<br />
                        设置DisplayAlerts属性的意图在于，运行宏时不必响应系统出现的警告而使执行过程中断。当然，在过程结束前，最好将DisplayAlerts属性设置为True。<br />
                        <span style="color: #0000ff">无须提示用户而保存工作表（DisplayAlerts属性）</span><br />
                        下面的示例保存工作表，而没有通知用户是否保存。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> SaveWorksheet()
    Application.DisplayAlerts = <span style="color: #000080">False</span>
    ActiveWorkbook.SaveAs <span style="color: #800000">&quot;C:\MonthlySales.xls&quot;</span>
    Application.DisplayAlerts = <span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>此时，如果现有文件与要保存的文件名相同，那么会覆盖该文件而不会弹出任何警告消息。<br />
                        <span style="color: #0000ff">使用SendKeys方法发送信息到记事本</span><br />
                        SendKeys方法允许发送按键到当前活动窗口，用来控制不支持任何其他交互形式的应用程序，例如DDE(动态数据交换)或OLE。<br />
                        下面的示例使用SendKeys命令从Excel中复制数据区域到记事本，然后保存该文件。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> SKeys()
    Range(<span style="color: #800000">&quot;A1:D15&quot;</span>).Copy <span style="color: #008000">'复制单元格区域
</span>    SendKeys <span style="color: #800000">&quot;% n&quot;</span>, <span style="color: #000080">True</span> <span style="color: #008000">'最小化Excel
</span>    Shell <span style="color: #800000">&quot;notepad.exe&quot;</span>, vbNormalFocus <span style="color: #008000">'开启记事本
</span>    SendKeys <span style="color: #800000">&quot;^V&quot;</span>, <span style="color: #000080">True</span> <span style="color: #008000">'将数据粘贴到记事本
</span>    SendKeys <span style="color: #800000">&quot;%FA&quot;</span>, <span style="color: #000080">True</span> <span style="color: #008000">'指定另存为
</span>    SendKeys <span style="color: #800000">&quot;SalesData.txt&quot;</span>, <span style="color: #000080">True</span> <span style="color: #008000">'提供文件名
</span>    SendKeys <span style="color: #800000">&quot;%S&quot;</span>, <span style="color: #000080">True</span> <span style="color: #008000">'保存文件
</span><span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>本示例首先复制数据区域到剪贴板，然后最小化Excel，开启记事本，接着从剪贴板复制数据到记事本，最后指定文件名并保存文件。<br />
                        下面的示例打开了&ldquo;记事本&rdquo;应用程序(不支持DDE或OLE)，并将数据行写入记事本文档：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> SKeys()
    <span style="color: #000080">Dim</span> dReturnValue <span style="color: #000080">As</span> <span style="color: #000080">Double</span>
    dReturnValue = Shell(<span style="color: #800000">&quot;NOTEPAD.EXE&quot;</span>, vbNormalFocus)
    AppActivate dReturnValue
    Application.SendKeys <span style="color: #800000">&quot;Copy Data.xlsx c:\&quot;</span>, <span style="color: #000080">True</span>
    Application.SendKeys <span style="color: #800000">&quot;~&quot;</span>, <span style="color: #000080">True</span>
    Application.SendKeys <span style="color: #800000">&quot;%FABATCH%S&quot;</span>, <span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>注意，应该在Excel应用程序窗口执行上述程序。<br />
                        下面的过程清除VBE立即窗口中的内容。如果在立即窗口中进行过试验或者使用Debug.Print语句在立即窗口输出数据，那么旧的信息将产生混乱。该过程将焦点转移到立即窗口，发送选择该窗口中的所有文本，然后发送Del键删除文本：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> ImmediateWindowClear()
    Application.VBE.Windows.Item(<span style="color: #800000">&quot;立即窗口&quot;</span>).SetFocus
    Application.SendKeys <span style="color: #800000">&quot;^a&quot;</span>
    Application.SendKeys <span style="color: #800000">&quot;{Del}&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>注意，要使上述代码运行，必需编程访问Visual Basic工程。从Excel功能区中选择&ldquo;开发工具&rdquo;选项卡，选择&ldquo;宏安全性&rdquo;，然后勾选&ldquo;信任对VBA工程对象模型的访问&rdquo;。<br />
                        其中，百分比符号(%)用于代表Alt键，波形符号(~) 代表回车键，^符号代表Ctrl键。在花括号{}里放置名称指定其它特别的键，例如{Del}代表Delete键。<br />
                        <span style="color: #0000ff">安排宏在指定的时间和间隔运行（OnTime方法）</span><br />
                        可以使用Application对象的OnTime方法在指定的时间或者在有规律的时间间隔运行某过程。OnTime方法的语法如下：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnTime(EarliestTime,Procedure,LastestTime,Schedule)</pre>
                        </div>
                        </div>
                        <p>参数EarliestTime指明希望何时运行由参数Procedure指定的过程，可选的参数LastestTime和Schedule指明过程运行的最迟时间，以及是否安排运行一个新过程或者删除已经存在的过程。当开始调用某过程而Excel正忙时，则需要使用参数LastestTime指定希望调用该过程的时间区间。如果使用Application对象的Wait方法暂停某宏，所有的Excel行为，包括手工交互操作，都将被挂起。OnTime方法的优势在于，当等待运行安排的宏时，允许返回正常的Excel交互操作，包括运行其他的宏。<br />
                        下面的示例指定每隔5分钟运行一次名为YourProc的过程：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnTime EarliestTime:=Now + TimeValue(<span style="color: #800000">&quot;00:05:00&quot;</span>), Procedure:=<span style="color: #800000">&quot;YourProc&quot;</span></pre>
                        </div>
                        </div>
                        <p>下面的示例在每天中午运行过程YourProc：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnTime EarliestTime:=TimeValue(<span style="color: #800000">&quot;12:00:00&quot;</span>), Procedure:=<span style="color: #800000">&quot;YourProc&quot;</span></pre>
                        </div>
                        </div>
                        <p>下面的示例安排每隔5分钟调用一次AutoSave过程。如果关闭该工作簿，则调用CleanUp过程来执行可能希望的清理以及删除任何额外的调用。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Workbook_Open()
    Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:05:00&quot;</span>), <span style="color: #800000">&quot;AutoSave&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Workbook_BeforeClose(Cancel <span style="color: #000080">As</span> <span style="color: #000080">Boolean</span>)
    <span style="color: #000080">On</span> <span style="color: #000080">Error</span> <span style="color: #000080">Resume</span> <span style="color: #000080">Next</span>
    Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:05:00&quot;</span>), <span style="color: #800000">&quot;CleanUp&quot;</span>, , <span style="color: #000080">False</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>注意，Workbook_Open事件和Workbook_BeforeClose事件包含在工作簿代码模块中，而AutoSave过程和CleanUp过程则存在于标准代码模块中。<br />
                        当使用OnTime方法安排在将来的某个时间运行宏时，必须确保Excel一直在内存中运行直至到达安排的时间。但不需要一直打开包含OnTime宏的工作簿。如果需要，Excel将打开该工作簿。<br />
                        通过上述简介，我们已经了解了OnTime方法的基本用法。下面再详细介绍OnTime方法。<br />
                        有时，我们可能需要设计Excel工作簿定期并自动地运行一个过程。例如，可能希望每隔几分钟从数据源中更新数据，此时执行Excel应用程序的OnTime方法指令Excel在给定的时间去运行某过程。通过编写代码使程序自已调用OnTime方法，能使VBA代码定期自动执行。<br />
                        OnTime方法要求指定日期和时间以及要运行的过程作为参数，重要的是要记住具体地告诉Excel什么时候运行这个过程而不是从当前时间开始的偏差。为了取消一个未执行的OnTime过程，必须经过该过程计划要运行的确切的时间，不能够告诉Excel取消下一个计划执行的过程。因此，建议将安排过程开始运行的时间存放在一个公共的（或全局）变量中，该变量作用于所有的代码。然后，能够使用所存储时间的变量去安排运行或取消事件。下面的示例代码在公共的常量中存储了所运行过程的名称和重复执行的时间间隔，当然这不是必需的。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Public</span> RunWhen <span style="color: #000080">As</span> <span style="color: #000080">Double</span>
<span style="color: #000080">Public</span> <span style="color: #000080">Const</span> cRunIntervalSeconds = 120 <span style="color: #008000">' two minutes
</span><span style="color: #000080">Public</span> <span style="color: #000080">Const</span> cRunWhat = <span style="color: #800000">&quot;The_Sub&quot;</span></pre>
                        </div>
                        </div>
                        <p>为开始这个过程，使用一个名为 StartTimer的子程序。代码如下：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> StartTimer()
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
    Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
        schedule:=<span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>将比当前时间多两分钟的日期和时间存放在RunWhen变量中，然后调用OnTime方法指令Excel何时运行cRunWhat过程。<br />
                        &ldquo;The_Sub&rdquo;是一个字符串变量，Excel将在合适的时间运行该过程。下面是该过程代码示例：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> The_Sub()
    <span style="color: #008000">'
</span>    <span style="color: #008000">'这里放置代码
</span>    <span style="color: #008000">'
</span>    StartTimer
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>注意，The_Sub过程的最后一行调用了StartTimer过程，再次重复运行这个过程。并且当下次使用OnTime调用The_Sub过程时，将再次调用StartTimer来重复执行它自已。这就是如何执行周期循环的方法。<br />
                        有时，当关闭工作簿时或者满足某个条件时需要停止定时执行的过程。由于OnTime方法是Application对象的一部分，简单地关闭已创建事件的工作簿不会取消对OnTime的调用。一旦Excel自身保持运行，它将执行OnTime过程，并且在必要时会自动打开该工作簿。<br />
                        为了停止OnTime过程，必须对OnTime方法指定确切的时间，这就是我们将时间作为公共的变量存放在RunWhen中的原因。否则，没办法知道过程计划执行的确切时间。（所计划的时间像OnTime方法中的一把&ldquo;钥匙&rdquo;，如果没有它，就没有通往事件的入口）<br />
                        下面是一个名为StopTimer的子过程，它将停止要执行的OnTime过程。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> StopTimer()
    <span style="color: #000080">On</span> <span style="color: #000080">Error</span> <span style="color: #000080">Resume</span> <span style="color: #000080">Next</span>
    Application.OnTime earliesttime:=RunWhen, _
        procedure:=cRunWhat, schedule:=<span style="color: #000080">False</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>这个过程使用了和StartTimer过程相同的OnTime语法，将schedule参数设置为False告诉Excel取消该过程的执行。可能希望在Auto_Close宏或Workbook_BeforeClose事件中包括一个对该过程的调用。在StopTimer过程中，使用On Error Resume Next语句忽略当你企图删除一个不存在的过程时可能产生的任何错误。<br />
                        下面的示例演示当在单元格B1中输入一个值后，如果A1单元格中不为空，那么将在10秒后自动清除单元格A1和B1中的内容。示例代码如下：<br />
                        在标准模块中输入如下代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> DeleteContents()
    Worksheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Range(<span style="color: #800000">&quot;A1:B1&quot;</span>).ClearContents
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
<span style="color: #000080">Sub</span> MyEntry()
    Range(<span style="color: #800000">&quot;B1&quot;</span>).Value = <span style="color: #800000">&quot;Goodbye&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>在工作表sheet1代码模块中输入如下代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Worksheet_Change(<span style="color: #000080">ByVal</span> Target <span style="color: #000080">As</span> Range)
    <span style="color: #000080">If</span> Target.Address &lt;&gt; <span style="color: #800000">&quot;$B$1&quot;</span> <span style="color: #000080">Then</span> <span style="color: #000080">Exit</span> <span style="color: #000080">Sub</span>
    <span style="color: #000080">If</span> IsEmpty(Target) <span style="color: #000080">Or</span> IsEmpty(Target.Offset(0, -1)) <span style="color: #000080">Then</span> <span style="color: #000080">Exit</span> <span style="color: #000080">Sub</span>
    Application.OnTime Now + TimeSerial(0, 0, 10), <span style="color: #800000">&quot;DeleteContents&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">扩展话题一：<br />
                        </span>在VBA帮助系统的OnTime方法介绍中，只对其参数EarliestTime, Procedure, LatestTime, Schedule进行了说明，并列举了定时运行某过程和撤销OnTime设置的三个代码示例。对OnAction属性的介绍中，也只简要介绍了单击某图形或菜单项时运行指定宏的示例。均没有介绍当OnTime方法或OnAction属性中设置的所要运行的宏带有参数时，如何传递参数到这些宏程序中。下面是自已总结的一些参数的传递方法，供分享。<br />
                        因为运用Application.OnTime或Object.OnAction调用宏程序的语法基本相似，因此下面介绍的OnTime方法所使用的语法同样适用于OnAction属性。<br />
                        为了便于理解，以下介绍均使用一段相似的代码，只不过传递给所调用宏程序MyProcedure的参数不同而已，以此来讲解传递给宏程序不同参数的方法。例如，下面的代码将使MyProcedure宏程序在从现在起的2秒后运行：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:00:02&quot;</span>), <span style="color: #800000">&quot;MyProcedure&quot;</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">问题1：</span>假设MyProcedure宏程序接受参数，如何传递参数到该宏程序中？有下面几种情形：<br />
                        （1）所调用的宏程序接受一个参数<br />
                        如果是在正常代码过程中传递参数给宏程序，可以使用&rdquo; MyProcedure (42)&rdquo;，其中&ldquo;42&rdquo;为传递给MyProcedure程序的参数。但如果这样的传递参数方法用在OnTime方法中，该程序将不会运行。<br />
                        正确的语法是外层为双引号，内层再加上一组单引号，里面是程序名和程序所接受的参数。如下所示：<br />
                        &lsquo;MyProcedure宏程序接受一个数值参数</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:00:02&quot;</span>), <span style="color: #800000">&quot;' MyProcedure 42'&quot;</span></pre>
                        </div>
                        </div>
                        <p>（2）所调用的宏程序接受多个参数<br />
                        如果所调用的宏程序接受几个参数，那么在这些参数之间应该用逗号分隔。如下所示：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #008000">'MyProcedure宏程序接受两个数值参数
</span>Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:00:02&quot;</span>), <span style="color: #800000">&quot;'MyProcedure 42, 13'&quot;</span></pre>
                        </div>
                        </div>
                        <p>（3）所调用的宏程序接受字符串参数<br />
                        如果所调用的宏程序所接受的参数是字符串，因为字符串已经带有一对双引号，因此应该将字符串包含在双层双引号中，即字符串参数周围有两对双引号。如下所示：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #008000">'MyProcedure宏程序接受一个字符串Hello!作为其参数
</span>Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:00:02&quot;</span>), <span style="color: #800000">&quot;'MyProcedure &quot;</span><span style="color: #800000">&quot;Hello!&quot;</span><span style="color: #800000">&quot;'&quot;</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">问题2：</span>当MyProcedure宏程序所接受的参数是变量，如何传递参数到该宏程序中？<br />
                        （1）该变量为局部变量，用如下所示的方式。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #008000">'MyProcedure宏程序接受一个字符串变量strText参数，该变量为局部变量
</span>strText = <span style="color: #800000">&quot;Hello!&quot;</span>
Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:00:02&quot;</span>), <span style="color: #800000">&quot;'MyProcedure &quot;</span><span style="color: #800000">&quot;&quot;</span> &amp; strText &amp; <span style="color: #800000">&quot;&quot;</span><span style="color: #800000">&quot;'&quot;</span></pre>
                        </div>
                        </div>
                        <p>（2）该变量为全局变量，用如下所示的方式，即不必加双层双引号。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #008000">'MyProcedure宏程序接受一个字符串变量g_strText参数，该变量必须声明为公有的
</span>g_strText = <span style="color: #800000">&quot;Hello!&quot;</span>
Application.OnTime Now + TimeValue(<span style="color: #800000">&quot;00:00:02&quot;</span>), <span style="color: #800000">&quot;'MyProcedure g_strText'&quot;</span></pre>
                        </div>
                        </div>
                        <p>注意，在这种情况下变量必须声明为公共变量，否则MyProcedure宏程序将不能找到该变量参数。<br />
                        <span style="color: #0000ff">扩展话题二：</span><br />
                        除了Excel的OnTime方法外，还能使用Windows API库提供的Timer函数。在某些情况下，使用API过程比使用OnTime方法更容易：第一，告诉Windows需要计时器发生的时间间隔而不是某天的特定时间；第二，API过程将自动更新，计时器将每隔一段时间发生直到你告诉它停下来为止。<br />
                        这些过程需要在Office2000或更新的版本中运行，因为我们使用了AddressOf函数，他们不会在Excel97或更早的版本中运行。<br />
                        为了使用Windows计时器，将下面的代码放在一个标准代码模块中。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Public</span> <span style="color: #000080">Declare</span> <span style="color: #000080">Function</span> SetTimer <span style="color: #000080">Lib</span> <span style="color: #800000">&quot;user32&quot;</span> ( _
         <span style="color: #000080">ByVal</span> HWnd <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, <span style="color: #000080">ByVal</span> nIDEvent <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, _
         <span style="color: #000080">ByVal</span> uElapse <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, <span style="color: #000080">ByVal</span> lpTimerFunc <span style="color: #000080">As</span> <span style="color: #000080">Long</span>) <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
<span style="color: #000080">Public</span> <span style="color: #000080">Declare</span> <span style="color: #000080">Function</span> KillTimer <span style="color: #000080">Lib</span> <span style="color: #800000">&quot;user32&quot;</span> ( _
         <span style="color: #000080">ByVal</span> HWnd <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, <span style="color: #000080">ByVal</span> nIDEvent <span style="color: #000080">As</span> <span style="color: #000080">Long</span>) <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
<span style="color: #000080">Public</span> TimerID <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
<span style="color: #000080">Public</span> TimerSeconds <span style="color: #000080">As</span> <span style="color: #000080">Single</span>
<span style="color: #000080">Sub</span> StartTimer()
    TimerSeconds = 1 <span style="color: #008000">' 指定计时器的间隔.
</span>    TimerID = SetTimer(0&amp;, 0&amp;, TimerSeconds * 1000&amp;, <span style="color: #000080">AddressOf</span> TimerProc)
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
<span style="color: #000080">Sub</span> EndTimer()
    <span style="color: #000080">On</span> <span style="color: #000080">Error</span> <span style="color: #000080">Resume</span> <span style="color: #000080">Next</span>
    KillTimer 0&amp;, TimerID
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
<span style="color: #000080">Sub</span> TimerProc(<span style="color: #000080">ByVal</span> HWnd <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, <span style="color: #000080">ByVal</span> uMsg <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, _
         <span style="color: #000080">ByVal</span> nIDEvent <span style="color: #000080">As</span> <span style="color: #000080">Long</span>, <span style="color: #000080">ByVal</span> dwTimer <span style="color: #000080">As</span> <span style="color: #000080">Long</span>)
    <span style="color: #008000">'
</span>    <span style="color: #008000">'由Windows调用的过程.
</span>    <span style="color: #008000">' 将与计时器相关的代码放置于此.
</span>    <span style="color: #008000">'
</span><span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>执行StartTimer过程开始计时。变量TimerSeconds指明计时器之间间隔有多少秒。这个值可能少于1。注意SetTimer过程在毫秒范围内取值，于是当我们调用SetTimer时我们通过将TimerSeconds乘以1000来增加间隔值。Windows每隔一段计时器发生的时间来调用TimerProc过程。可以将这个过程命名为想要的名字，但必须如示例中所示声明这些参数变量。如果变换了过程的名称，那么要确保也变换了SetTimer中的名字。Windows将传递下面的值到TimerProc过程：<br />
                        HWnd Excel应用程序的Windows句柄。一般可忽略这个参数。<br />
                        uMsg 值为275。一般可忽略这个参数。<br />
                        nIDEvent 这个值通过SetTimer获得TimerID变量返回。如果不止一次调用SetTimer，那么能检查nIDEvent参数确定哪次调用SetTimer导致调用该过程。<br />
                        dwTimer 计算机运行的毫秒数。相同的值通过GetTickCount Windows过程被返回。<br />
                        调用EndTimer过程来停止计时器循环，这个过程调用KillTimer，通过SetTimer返回的值传递给它。<br />
                        API计时器和Excel的OnTime方法间有两个重要的区别：第一，API计时器有着更精确的时间间隔（达到1秒或更少）；第二，即便Excel处在编辑模式（也就是说，当正在编辑单元格时），API计时器也将执行。注意，当Excel处于编辑模式时，如果TImerProc企图修改工作表单元格，Excel将会立即退出。<br />
                        <br />
                        <span style="color: #0000ff"><span style="text-decoration: underline"><strong>Application对象的其它一些属性和方法</strong></span></span><br />
                        <span style="color: #0000ff">Caller属性</span><br />
                        Application对象的Caller属性返回调用或执行宏过程的对象的引用，适用于窗体工具栏控件、指定宏的绘图对象和用户自定义函数。在确定调用用户自定义函数的单元格时特别有用，例如下面的示例使用自定义函数WorksheetName函数显示调用该函数的工作表的名称。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Function</span> WorksheetName()
    Application.Volatile
    WorksheetName = Application.Caller.Parent.Name
<span style="color: #000080">End</span> <span style="color: #000080">Function</span></pre>
                        </div>
                        </div>
                        <p>在工作表单元格中输入&ldquo;=WorksheetName()&rdquo;，将显示该工作表的名称。Application.Caller作为一个Range对象返回对调用该函数的单元格的引用，然后使用Range对象的Parent属性产生对包含该Range对象的Worksheet对象的引用，最后将Worksheet对象的Name属性赋给该函数的返回值。当每次重新计算工作表时，Appliaction对象的Volatile方法强制Excel重新计算该函数。因此，如果改变了工作表的名称，那么该函数将显示新的工作表名称。<br />
                        在WorksheetName函数中，使用下面的代码是错误的：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
WorksheetName = ActiveSheet.Name</pre>
                        </div>
                        </div>
                        <p>如果激活的工作表不是包含该公式的工作表并发生重新计算，则将在原单元格中返回错误的名称。例如，如果在工作表Sheet1中已使用该函数，那么在工作表Sheet2中再次使用该函数时工作表Sheet1中将返回错误的名称，即工作表Sheet2的名称。<br />
                        <span style="color: #0000ff">CutCopyMode属性</span><br />
                        当我们在Excel工作表中使用剪切或复制时，在单元格区域周边会出现连续移动的虚线，即使执行完复制操作，原单元格区域周边的虚线框仍存在，直到您按Esc键或者开始单元格中输入操作。如果需要在执行完复制操作后，不要在Excel中看到复制时产生的虚线框，那么可以将Excel剪切复制模式关闭，即设置CutCopyMode属性为False：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.CutCopyMode=<span style="color: #000080">False</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">Evaluate方法</span><br />
                        Evaluate方法用于将名称转换为一个对象或者一个值，其语法如下：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Evaluate(<span style="color: #800000">&quot;表达式&quot;</span>)</pre>
                        </div>
                        </div>
                        <p>也可以使用简写格式：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
[表达式]</pre>
                        </div>
                        </div>
                        <p>表达式可以是任何有效的工作表计算，在其左边有或者没有等号均可，或者是对单元格区域的引用，包括定义的名称或外部引用，或者是图表对象。工作表计算包含在VBA中不能使用的工作表函数，或者是工作表数组公式。<br />
                        例如，可以在工作表中使用ISBLANK函数，但不能在VBA中使用该函数，因为VBA的等效函数IsEmpty提供了相同的功能。然而，如果需要，仍然可以使用ISBLANK函数。下面的二个示例是等价的，如果单元格A1为空，则返回 True；如果单元格A1不为空，则返回False。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox Evaluate(<span style="color: #800000">&quot;=ISBLANK(A1)&quot;</span>)
MsgBox [ISBLANK(A1)]</pre>
                        </div>
                        </div>
                        <p>第一个示例用法的好处是能够非常灵活地使用代码产生字符串值。第二个示例用法更简短，但仅通过编辑代码来修改表达式。下面的过程显示True或者False表明活动单元格是否为空，同时演示了第一个示例用法的灵活性。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> IsActiveCellEmpty()
    <span style="color: #000080">Dim</span> sFunctionName <span style="color: #000080">As</span> <span style="color: #000080">String</span>, sCellReference <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    sFunctionName = <span style="color: #800000">&quot;ISBLANK&quot;</span>
    sCellReference = ActiveCell.Address
    MsgBox Evaluate(sFunctionName &amp; <span style="color: #800000">&quot;(&quot;</span> &amp; sCellReference &amp; <span style="color: #800000">&quot;)&quot;</span>)
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>注意，使用第二个示例用法不能计算包含变量的表达式。<br />
                        下面的两行代码演示使用Evaluate方法引用Range对象的两种方式，并且给该对象赋值：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Evaluate(<span style="color: #800000">&quot;A1&quot;</span>).Value = 10
[A1].Value = 10</pre>
                        </div>
                        </div>
                        <p>第一个表达式是不实用的并且极少使用，而第二个表达式虽然极不灵活，却是引用Range对象更简便的方式。通过省略Value属性进一步简化表达式，因为该属性是Range对象的默认属性：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
[A1] = 10</pre>
                        </div>
                        </div>
                        <p>总之，使用方括号的优点在于代码简短，而使用Evaluate方法的优点在于参数是字符串，这样即可以在代码中构造该字符串，也可以使用变量。再举一个示例，下面的代码将工作表Sheet1中单元格A1的字体加粗：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Worksheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Activate
boldCell = <span style="color: #800000">&quot;A1&quot;</span>
Application.Evaluate(boldCell).Font.Bold = <span style="color: #000080">True</span></pre>
                        </div>
                        </div>
                        <p>此外，Evaluate方法能够返回工作簿名称集合的内容以及有效地产生数组值。下面的代码创建一个隐藏的名称用来保存密码。在&ldquo;插入&rdquo;&rarr;&ldquo;名称&rdquo;&rarr;&ldquo;定义&rdquo;对话框中不能看到隐藏的名称，因此这是在工作簿里存储信息的便利方式，不会弄乱用户界面：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Names.Add Name:= <span style="color: #800000">&quot;PassWord&quot;</span>, RefersTo:= <span style="color: #800000">&quot;Bazonkas&quot;</span>, Visible:=<span style="color: #000080">False</span></pre>
                        </div>
                        </div>
                        <p>然后，像下面的代码一样在表达式里使用隐藏的数据：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
sUserInput = InputBox(<span style="color: #800000">&quot;Enter Password&quot;</span>)
<span style="color: #000080">If</span> sUserInput = [PassWord] <span style="color: #000080">Then</span>
    ...
<span style="color: #000080">End</span> <span style="color: #000080">If</span></pre>
                        </div>
                        </div>
                        <p>Evaluate方法同样适用于数组。下面的表达式产生一个二维的Variant型数组，100行1列，包含从101 到 200的值。执行该过程比使用For&hellip;Next循环更有效率。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
vRowArray = [ROW(101:200)]</pre>
                        </div>
                        </div>
                        <p>下面的代码将101至200的值赋给单元格区域B1:B100，同样比For&hellip;Next循环更有效率：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
[B1:B100] = [ROW(101:200)]</pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">OnKey方法<br />
                        </span>使用OnKey方法按特定的键或组合键运行指定的过程，也可以禁用内置的组合键。其语法为：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnKey(Key,Procedure)</pre>
                        </div>
                        </div>
                        <p>参数Key指定要按的键的字符串。参数Procedure指定要运行的过程名称的字符串，如果为空（&rdquo;&quot;），则按参数Key指定的键时将不发生任何操作；如果省略该参数，则恢复参数Key指定的键在Excel中的正常操作，同时清除先前使用OnKey方法所做的操作设置。<br />
                        参数Key可以指定任何与Alt、Ctrl或Shift组合使用的键，还可以指定这些键的任何组合。每一个键可以由一个或多个字符表示，比如&rdquo;a&rdquo;表示字符a，&rdquo;{ENTER}&rdquo;表示Enter（回车）。若要指定按对应的键（例如Enter或Tab）时的非显示字符，可以使用下表2所列出的代码。表2中的每个代码表示键盘上的一个对应键，按键代码放置在花括号{}中。<br />
                        <br />
                        <font size="2">还可以指定与Shift和/或Ctrl和/或Alt组合使用的键。若要指定与其他键组合使用的键，可使用下表3。<br />
                        </font></p>
                        <p>
                        <table border="1">
                            <caption>表2：OnKey方法的按键代码</caption>
                            <tbody>
                                <tr bgcolor="#dcdcdc">
                                    <th>按键</th>
                                    <th>代码</th>
                                </tr>
                                <tr>
                                    <td>Backspace</td>
                                    <td>{Backspace}或{BS}</td>
                                </tr>
                                <tr>
                                    <td>Break</td>
                                    <td>{BREAK}</td>
                                </tr>
                                <tr>
                                    <td>Caps Lock</td>
                                    <td>{CAPSLOCK}</td>
                                </tr>
                                <tr>
                                    <td>Clear</td>
                                    <td>{CLEAR}</td>
                                </tr>
                                <tr>
                                    <td>Delete或Del</td>
                                    <td>{Delete}或{DEL}</td>
                                </tr>
                                <tr>
                                    <td>向下箭头</td>
                                    <td>{DOWN}</td>
                                </tr>
                                <tr>
                                    <td>End</td>
                                    <td>{END}</td>
                                </tr>
                                <tr>
                                    <td>Enter（在数字小键盘中）</td>
                                    <td>{ENTER}</td>
                                </tr>
                                <tr>
                                    <td>Enter</td>
                                    <td>~（波形符）</td>
                                </tr>
                                <tr>
                                    <td>Esc</td>
                                    <td>{ESCAPE}或{ESC}</td>
                                </tr>
                                <tr>
                                    <td>Help</td>
                                    <td>{HELP}</td>
                                </tr>
                                <tr>
                                    <td>Home</td>
                                    <td>{HOME}</td>
                                </tr>
                                <tr>
                                    <td>Ins</td>
                                    <td>{Insert}</td>
                                </tr>
                                <tr>
                                    <td>向左箭头</td>
                                    <td>{LEFT}</td>
                                </tr>
                                <tr>
                                    <td>Num Lock</td>
                                    <td>{NUMLOCK}</td>
                                </tr>
                                <tr>
                                    <td>Page Down</td>
                                    <td>{PGDN}</td>
                                </tr>
                                <tr>
                                    <td>Page Up</td>
                                    <td>{PGUP}</td>
                                </tr>
                                <tr>
                                    <td>Return</td>
                                    <td>{RETURN}</td>
                                </tr>
                                <tr>
                                    <td>向右箭头</td>
                                    <td>{RIGHT}</td>
                                </tr>
                                <tr>
                                    <td>Scroll Lock</td>
                                    <td>{SCROLLLOCK}</td>
                                </tr>
                                <tr>
                                    <td>Tab</td>
                                    <td>{TAB}</td>
                                </tr>
                                <tr>
                                    <td>向上箭头</td>
                                    <td>{UP}</td>
                                </tr>
                                <tr>
                                    <td>F1到F15</td>
                                    <td>{F1}到{F15}</td>
                                </tr>
                            </tbody>
                        </table>
                        </p>
                        <p>&nbsp;</p>
                        <p>
                        <table border="1">
                            <caption><font size="2">表3：组合按键代码</font><br />
                            <font size="2">若要为特定字符指定处理过程（如 +、^、% 等等），可以将此字符用花括号括起。<br />
                            下面的示例为键序列Ctrl+加号分配&ldquo;InsertProc&rdquo;过程，并为键序列Shift+Ctrl+向右键分配&ldquo;SpecialPrintProc&rdquo;过程。</font></caption>
                            <tbody>
                                <tr bgcolor="#dcdcde">
                                    <th>要组合的键</th>
                                    <th>在按键代码之前添加</th>
                                </tr>
                                <tr>
                                    <td>Shift</td>
                                    <td>+（加号）</td>
                                </tr>
                                <tr>
                                    <td>Ctrl</td>
                                    <td>^（插入符号）</td>
                                </tr>
                                <tr>
                                    <td>Alt</td>
                                    <td>%（百分号）</td>
                                </tr>
                            </tbody>
                        </table>
                        </p>
                        <p>&nbsp;</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnKey <span style="color: #800000">&quot;^{+}&quot;</span>, <span style="color: #800000">&quot;InsertProc&quot;</span>
Application.OnKey <span style="color: #800000">&quot;+^{RIGHT}&quot;</span>, <span style="color: #800000">&quot;SpecialPrintProc&quot;</span></pre>
                        </div>
                        </div>
                        <p>下面的示例将Shift+Ctrl+向右键恢复正常操作。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnKey <span style="color: #800000">&quot;+^{RIGHT}&quot;</span></pre>
                        </div>
                        </div>
                        <p>下面的示例将Shift+Ctrl+向右键键序列设为不发生任何操作。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnKey <span style="color: #800000">&quot;+^{RIGHT}&quot;</span>, <span style="color: #800000">&quot;&quot;</span></pre>
                        </div>
                        </div>
                        <p>又如，下面的代码忽略Alt+F4组合键的操作：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Application.OnKey <span style="color: #800000">&quot;%{F4}&quot;</span>,<span style="color: #800000">&quot;&quot;</span></pre>
                        </div>
                        </div>
                        <p>即按下Alt+F4组合键后，Excel没有任何反应，不执行任何操作。<br />
                        注意，OnKey方法使用的按键将应用到所有打开的工作簿，且仅在当前的Excel会话期间起作用。<br />
                        下面的示例代码禁用工作表右键快捷菜单：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Workbook_SheetBeforeRightClick(<span style="color: #000080">ByVal</span> Sh <span style="color: #000080">As</span> <span style="color: #000080">Object</span>, _
                      <span style="color: #000080">ByVal</span> Target <span style="color: #000080">As</span> Range, Cancel <span style="color: #000080">As</span> <span style="color: #000080">Boolean</span>)
    Cancel = <span style="color: #000080">True</span>
    MsgBox <span style="color: #800000">&quot;对不起!已禁用右键菜单!&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #008000">'禁用Shift+{F10}显示快捷菜单
</span><span style="color: #000080">Sub</span> SetupNoShiftF10()
    Application.OnKey <span style="color: #800000">&quot;+{F10}&quot;</span>, <span style="color: #800000">&quot;NoShiftF10&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #008000">'恢复Shift+F10组合键的功能
</span><span style="color: #000080">Sub</span> TurnOffNoShiftF10()
    Application.OnKey <span style="color: #800000">&quot;+{F10}&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span>
&nbsp;
<span style="color: #000080">Sub</span> NoShiftF10()
    MsgBox <span style="color: #800000">&quot;对不起!已禁用右键菜单!&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">ThisCell属性<br />
                        </span>ThisCell属性返回一个单元格，作为Range对象在此调用用户定义的函数。下面的示例在调用函数时将函数所在单元格的地址通知给用户。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Function</span> UseThisCell()
    MsgBox <span style="color: #800000">&quot;该单元格的地址为: &quot;</span> &amp; _
        Application.ThisCell.Address
<span style="color: #000080">End</span> <span style="color: #000080">Function</span></pre>
                        </div>
                        </div>
                        <p>在用户定义的函数中，用户不能访问Range对象上的属性或方法。当完成了重新计算后，用户可以为今后的使用和执行附加操作而存储Range对象。<br />
                        <span style="color: #0000ff">WorksheetFunction属性</span><br />
                        在Excel中可以直接使用两组内置函数，一组函数是VBA语言的组成部分，另一组函数是Excel工作表函数的子集。可以使用Application对象的WorksheetFunction属性来使用VBA中没有相同功能的工作表函数。<br />
                        通常，如果一个VBA函数与一个Excel函数有着相同的用途，那么该Excel函数就不能直接用于VBA宏（虽然本文前面介绍过可以使用Evalute方法访问任何Excel函数）。但还有一种特殊的情形，关于Excel的Mod函数。Mod函数不能直接用于VBA，但是VBA提供了相同用途的Mod操作符。下面的代码使用Evaluate方法的简洁格式，运用Excel的Mod函数和Today函数以数字显示星期几：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox [<span style="color: #000080">MOD</span>(TODAY(),7)]</pre>
                        </div>
                        </div>
                        <p>使用VBA的Date函数和Mod操作符，更简单地获得相同的结果：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
MsgBox <span style="color: #000080">Date</span> <span style="color: #000080">Mod</span> 7</pre>
                        </div>
                        </div>
                        <p>Excel的Concatenate 函数同样也不能用于VBA，但可以使用连接操作符(&amp;)代替，就像在Excel工作表公式里一样。如果一定要在VBA中使用Concatenate函数，可以编写如下的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> ConcatenateExample1()
    <span style="color: #000080">Dim</span> s1 <span style="color: #000080">As</span> <span style="color: #000080">String</span>, s2 <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    s1 = <span style="color: #800000">&quot;Jack &quot;</span>
    s2 = <span style="color: #800000">&quot;Smith&quot;</span>
    MsgBox Evaluate(<span style="color: #800000">&quot;CONCATENATE(&quot;</span><span style="color: #800000">&quot;&quot;</span> &amp; s1 &amp; <span style="color: #800000">&quot;&quot;</span><span style="color: #800000">&quot;,&quot;</span><span style="color: #800000">&quot;&quot;</span> &amp; s2 &amp; <span style="color: #800000">&quot;&quot;</span><span style="color: #800000">&quot;)&quot;</span>)
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>但下面的代码更简单且结果相同：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> ConcatenateExample2()
    <span style="color: #000080">Dim</span> s1 <span style="color: #000080">As</span> <span style="color: #000080">String</span>, s2 <span style="color: #000080">As</span> <span style="color: #000080">String</span>
    s1 = <span style="color: #800000">&quot;Jack &quot;</span>
    s2 = <span style="color: #800000">&quot;Smith&quot;</span>
    MsgBox s1 &amp; s2
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>VBA函数，例如Date、DateSerial和IsEmpty能够自由地使用，因为它们是&lt;全局&gt;的成员。例如，可以使用下面的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
StartDate = DateSerial(1999, 6, 1)</pre>
                        </div>
                        </div>
                        <p>Excel函数，例如VLookup和SUM是WorksheetFuncion对象的方法，可以使用下面的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Total = WorksheetFunction.Sum(Range(<span style="color: #800000">&quot;A1:A10&quot;</span>))</pre>
                        </div>
                        </div>
                        <p>为了与Excel 5和Excel 95兼容，可以直接使用Application而无需WorksheetFunction：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
Total = Application.Sum(Range(<span style="color: #800000">&quot;A1:A10&quot;</span>))</pre>
                        </div>
                        </div>
                        <p>在VBE编辑器中，输入下面的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace">
application.WorksheetFunction.</pre>
                        </div>
                        </div>
                        <p>将自动显示出能够在VBA中使用的所有工作表函数列表。<br />
                        <span style="color: #0000ff">改变光标显示（Cursor属性）</span><br />
                        通过Cursor属性来设置光标在Excel界面中的显示形状，可以将其设置为xlIBeam（条状）、xlNorthwestArrow（西北向箭头）、xlWait（等待）、xlDefault（恢复为默认值）。<br />
                        <span style="color: #0000ff">获取或改变Excel窗口的状态或大小（WindowState属性）</span><br />
                        通过WindowState属性来获取或改变Excel窗口的状态，包括xlMaximized（最大化）、xlMinimized（最小化）、xlNormal（正常）。<br />
                        通过Height属性和Width属性改变或获取Excel主应用程序的高度和宽度。注意，只有当Application.WindowState=xlNormal时，才能改变Height属性和Width属性。<br />
                        通过UsableHeight属性和UsableWidth属性获取主应用程序窗口中一个窗口可用的最大高度和最大宽度。<br />
                        <span style="color: #0000ff">获取系统信息</span><br />
                        下面的示例程序使用了多个Application对象的属性以获取系统信息：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> GetSystemInfo()
    MsgBox <span style="color: #800000">&quot;Excel版本信息为:&quot;</span> &amp; Application.CalculationVersion
    MsgBox <span style="color: #800000">&quot;Excel当前允许使用的内存为:&quot;</span> &amp; Application.MemoryFree
    MsgBox <span style="color: #800000">&quot;Excel当前已经使用的内存为:&quot;</span> &amp; Application.MemoryUsed
    MsgBox <span style="color: #800000">&quot;Excel可以使用的内存为:&quot;</span> &amp; Application.MemoryTotal
    MsgBox <span style="color: #800000">&quot;本机操作系统的名称和版本为:&quot;</span> &amp; Application.OperatingSystem
    MsgBox <span style="color: #800000">&quot;本产品所登记的组织名称为:&quot;</span> &amp; Application.OrganizationName
    MsgBox <span style="color: #800000">&quot;当前用户名为:&quot;</span> &amp; Application.UserName
    MsgBox <span style="color: #800000">&quot;当前使用的Excel版本为:&quot;</span> &amp; Application.Version
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">自动隐藏公式栏（DisplayFormulaBar属性）</span><br />
                        在Excel 2003及以前版本的Excel中，当单元格中输入的数据超过一定数量时，公式栏会自动向下扩展，从而遮盖住了工作表区域。下面的示例代码当单元格中的字符数小于50时，显示公式栏，否则隐藏公式栏。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Private</span> <span style="color: #000080">Sub</span> Worksheet_SelectionChange(<span style="color: #000080">ByVal</span> Target <span style="color: #000080">As</span> Range)
    <span style="color: #000080">If</span> Target.Cells.count &gt; 1 <span style="color: #000080">Then</span> <span style="color: #000080">Exit</span> <span style="color: #000080">Sub</span>
    <span style="color: #000080">If</span> Len(Target.Text) &gt; 50 <span style="color: #000080">Or</span> Len(Target.Formula) &gt; 50 <span style="color: #000080">Then</span>
        Application.DisplayFormulaBar = <span style="color: #000080">False</span>
    <span style="color: #000080">Else</span>
        Application.DisplayFormulaBar = <span style="color: #000080">True</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>当然，上述代码在Excel 2007中仍然有用，但Excel 2007已经改进了公式栏的特性，即使输入大量的数据，也不会遮盖工作表区域。<br />
                        <span style="color: #0000ff">将Excel全屏显示（DisplayFullScreen属性）<br />
                        </span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> testFullScreen()
    MsgBox <span style="color: #800000">&quot;运行后将Excel的显示模式设置为全屏幕&quot;</span>
    Application.DisplayFullScreen = <span style="color: #000080">True</span>
    MsgBox <span style="color: #800000">&quot;恢复原来的状态&quot;</span>
    Application.DisplayFullScreen = <span style="color: #000080">False</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">获取Excel启动文件夹的路径（StartupPath属性）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> ExcelStartFolder()
    MsgBox <span style="color: #800000">&quot;Excel的启动文件夹的路径为:&quot;</span> &amp; Chr(10) &amp; Application.StartupPath
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">检测Excel的版本（Version属性）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> CheckVersion()
    <span style="color: #000080">If</span> Val(Application.Version) &lt; 12 <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;只在Excel 2007或更高版本中有效&quot;</span>
        ThisWorkbook.<span style="color: #000080">Close</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>Application对象的Version属性返回一个代表当前运行的Excel的版本的字符串，使用Val函数返回该字符串内的数值。该属性通常用于判断当前Excel是否满足程序运行要求。<br />
                        <span style="color: #0000ff">打开最近使用过的文档（RecentFiles属性）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> OpenRecentFiles()
    MsgBox <span style="color: #800000">&quot;显示最近使用过的第三个文件的名称,并打开该文件&quot;</span>
    MsgBox <span style="color: #800000">&quot;最近使用过的第三个文件的名称为:&quot;</span> &amp; Application.RecentFiles(3).Name
    Application.RecentFiles(3).<span style="color: #000080">Open</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">文件对话框操作（FileDialog属性）<br />
                        </span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> UseFileDialogOpen()
    <span style="color: #000080">Dim</span> lngCount <span style="color: #000080">As</span> <span style="color: #000080">Long</span>
    <span style="color: #008000">'开启&quot;打开文件&quot;对话框
</span>    <span style="color: #000080">With</span> Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = <span style="color: #000080">True</span>
        .Show
        <span style="color: #008000">'显示所选的每个文件的路径
</span>        <span style="color: #000080">For</span> lngCount = 1 <span style="color: #000080">To</span> .SelectedItems.count
            MsgBox .SelectedItems(lngCount)
        <span style="color: #000080">Next</span> lngCount
    <span style="color: #000080">End</span> <span style="color: #000080">With</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>本示例显示&ldquo;打开文件&rdquo;对话框，当用户在其中选择一个或多个文件后，将依次显示每个文件的路径。其中FileDialog属性返回打开和保存对话框中一系列对象的集合，可以对该集合对象的属性进行进一步的设置，例如上例中的AllowMultiSelect属性设置为True将允许用户选择多个文件。<br />
                        <span style="color: #0000ff">改变Excel工作簿的名称（Caption属性）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> SetCaption()
    Application.Caption = <span style="color: #800000">&quot;我的工作簿&quot;</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>将工作簿中的Microsoft Excel列改为&ldquo;我的工作簿&rdquo;。<br />
                        <span style="color: #0000ff">调用Windows的计算器（ActivateMicrosoftApp方法）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> CallCalculate()
    Application.ActivateMicrosoftApp Index:=0
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>运行上述过程后，将调用Windows的计算器。<br />
                        <span style="color: #0000ff">暂时停止宏运行（Wait方法）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> Stop5sMacroRun()
    <span style="color: #000080">Dim</span> SetTime <span style="color: #000080">As</span> <span style="color: #000080">Date</span>
    MsgBox <span style="color: #800000">&quot;按下「确定」,5秒后执行程序「testFullScreen」&quot;</span>
    SetTime = DateAdd(<span style="color: #800000">&quot;s&quot;</span>, 5, Now())
    Application.Wait SetTime
    <span style="color: #000080">Call</span> testFullScreen
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>运行本程序后，按下弹出的提示框中的&ldquo;确定&rdquo;按钮，等待5秒后执行另一程序testFullScreen。<br />
                        <span style="color: #0000ff">重新计算工作簿（Calculate方法）</span><br />
                        当工作簿的计算模式被设置为手动模式后，运用Calculate方法可以重新计算所有打开的工作簿、工作簿中特定的工作表或者工作表中指定的单元格区域，如下面的代码：</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> CalculateAllWorkbook()
    Application.Calculate
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>下面的代码先将当前Microsoft Excel的版本与上次计算该工作簿的Excel版本进行比较，如果两个版本不同，则对所有打开工作簿中的数据进行一次完整计算。其中，CalculationVersion属性返回工作簿的版本信息。</p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> CalculateFullSample()
    <span style="color: #000080">If</span> Application.CalculationVersion &lt;&gt; Workbooks(1).CalculationVersion <span style="color: #000080">Then</span>
        Application.CalculateFull
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p><span style="color: #0000ff">控制函数重新计算（Volatile方法）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Function</span> NonStaticRand()
    <span style="color: #008000">'当工作表中任意单元格重新计算时本函数更新
</span>    Application.Volatile <span style="color: #000080">True</span>
    NonStaticRand = Rnd()
<span style="color: #000080">End</span> <span style="color: #000080">Function</span></pre>
                        </div>
                        </div>
                        <p>本示例摸仿Excel中的Rand()函数，当工作表单元格发生变化时，都会重新计算该函数。在例子中，使用了Volatile方法，强制函数进行重新计算，即无论何时重新计算工作表，该函数都会重新计算。<br />
                        <span style="color: #0000ff">获取重叠区域（Intersect方法）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> IntersectRange()
    <span style="color: #000080">Dim</span> rSect <span style="color: #000080">As</span> Range
    Worksheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Activate
    <span style="color: #000080">Set</span> rSect = Application.Intersect(Range(<span style="color: #800000">&quot;rg1&quot;</span>), Range(<span style="color: #800000">&quot;rg2&quot;</span>))
    <span style="color: #000080">If</span> rSect <span style="color: #000080">Is</span> <span style="color: #000080">Nothing</span> <span style="color: #000080">Then</span>
        MsgBox <span style="color: #800000">&quot;没有交叉区域&quot;</span>
    <span style="color: #000080">Else</span>
        rSect.<span style="color: #000080">Select</span>
    <span style="color: #000080">End</span> <span style="color: #000080">If</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>本示例在工作表Sheet1中选定两个命名区域rg1和rg2的重叠区域，如果所选区域不重叠，则显示一条相应的信息。其中，Intersect方法返回一个Range对象，代表两个或多个范围重叠的矩形区域。<br />
                        <span style="color: #0000ff">获取路径分隔符（PathSeparator属性）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> GetPathSeparator()
    MsgBox <span style="color: #800000">&quot;路径分隔符为&quot;</span> &amp; Application.PathSeparator
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>本示例使用PathSeparator属性返回路径分隔符（&rdquo;\&rdquo;）。<br />
                        <span style="color: #0000ff">快速移至指定位置（Goto方法）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> GotoSample()
    Application.<span style="color: #000080">Goto</span> Reference:=Worksheets(<span style="color: #800000">&quot;Sheet1&quot;</span>).Range(<span style="color: #800000">&quot;A154&quot;</span>), _
                     scroll:=<span style="color: #000080">True</span>
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>本示例运行后，将当前单元格移至工作表Sheet1中的单元格A154。可以将本技巧运用到工作簿事件中，即当打开某工作簿时，快速定位到上一次退出时的单元格位置。<br />
                        <span style="color: #0000ff">关闭Excel（Quit方法）</span></p>
                        <div class="wp_syntax" style="padding-bottom: 0px">
                        <div class="code">
                        <pre class="vb" style="font-family: monospace"><span style="color: #000080">Sub</span> 关闭Excel()
    MsgBox <span style="color: #800000">&quot;Excel将会关闭&quot;</span>
    Application.Quit
<span style="color: #000080">End</span> <span style="color: #000080">Sub</span></pre>
                        </div>
                        </div>
                        <p>运行本程序后，若该工作簿未保存，则会弹出对话框询问是否保存。</p>
                        <p>参考资料：</p>
                        <ul>
                            <li><a href="http://msdn.microsoft.com/en-us/library/bb978780.aspx" target="_blank"><font color="#225588">Developers Guide to the Excel 2007 Application Object</font></a></li>
                            <li><span style="color: #000000">Excel 2007 VBA参考大全</span></li>
                            <li>Mastering Excel 2003 Programming with VBA</li>
                            <li><a href="http://blog.excelhome.net/user1/fanjy/archives/2006/650.html" target="_blank"><font color="#225588">Application对象基本操作应用示例</font></a></li>
                            <li>Excel 2007高级VBA编程宝典</li>
                        </ul>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=114" /> 
	  <id>http://www.bycee.cn/default.asp?id=114</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[买笔记本电脑的砍价技巧【巨实用】]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=12" label="奇趣生活" /> 
	  <updated>2009-08-18T19:24:27+08:00</updated>
	  <published>2009-08-18T19:24:27+08:00</published>
		  <summary type="html"><![CDATA[<p><font color="#ff0033">晕了~~~砍价砍成这这样也是一种技术了，没见过这么猛的，太有艺术细菌了~~~已经把兵法运用的有有声有色了，俩字----高手，建议没这么深厚的功底不要这么玩，容易出问题的！<br />
另：突然想到的，看这篇文章貌似不是全文，经彻底搜查每个角落也没发现其他补充文章，故有爱好者或知情者请速提供情报，先行谢过~<br />
</font><font color="#0033ff">问价<br />
商家：先生需要买笔记本吗?<br />
Jjbug：嗯<br />
商家：先生大概需要哪个价位的(这是jjbug在市场上听见最多的一句话)<br />
jjbug：价位跟优惠的有关吗?(对方愣了)<br />
商家：呵呵&hellip;&hellip;&hellip;<br />
jjbug：价位不重要，重要是合适，对吧?<br />
商家：对对对。<br />
商家：先生大概的用途是?(这里可以乱说或者实话实说，随便你，因为是攀谈)<br />
jjbug：省下N个字<br />
商家：先生可以看看这款ASUS A3系列(具体配置我都忘记了)<br />
jjbug：嗯，这款最近销售量如何?(是商家都说好，因为是他推荐的)<br />
商家：这款很流行，又实惠，质量也不错。因为ASUS在促销，所以这款价格也非常低(基本上所有商家都这么说，我都麻木了，每天都促销?)<br />
jjbug：像这种机型xxx的有吗?(故意这么问，让对方认为你是菜鸟不熟悉机型是有效也有用的办法，不然如何找破绽，商家越是吹牛越是有破绽，只有通过找出对方破绽才能让自己学习)<br />
商家：来看看这款M2C系列，这款(省去200多字赞成词)<br />
jjbug：(故意很感兴趣)那这款机型带票多少(建议，买笔记本千万别这么问)。<br />
　商家：11XXX(我当时差点吐血)<br />
　jjbug：嗯，不是说这款机型漏电吗?<br />
　商家：是有，但是只是非常少数的插头才可能出现，并且ASUS也做出了相应的补救办法(有吗?我查看ASUS的网站，就看见一个申明，大家不信可以去看看)。<br />
　Jjbug：(犹豫ing)<br />
　商家：其实这款机型很不错(废话一堆)，如果你真的打算购买，我们价格可以商量。<br />
　Jjbug：多少?<br />
商家：看你什么时候要?<br />
Jjbug：价格合适我下午就来买。<br />
　商家：(故意计算，别相信商家表面)，10XXX。<br />
　Jjbug：(真够黑的，以后会告诉大伙为什么)嗯，但是系统安装上我不太会<br />
　商家：你放心，我们的技术人员会给你安装最新的XP2代(XP出2代了&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;..)，而且我们会送你礼物(这些礼物全是ASUS厂家送的，记住，砍价时候一定要戳穿这一点)<br />
　jjbug：嗯，让我再想想。<br />
　商家：你留个电话吧(现在商家都流行这么说)<br />
　jjbug：我联系你就行了，你有名片吧?<br />
　Jjbug再次想提醒大伙，商家的名片是用来找借口闪人的，特别是一问出低价(非常少的几率，我只问出过2次)，马上拿名片闪人。<br />
　　砍价<br />
　　这里我首先把一些实战过程分部写出来，然后慢慢分析，从网上了解足够资料后，直接去体验中心或者直接经销商的其中一家。<br />
　　选择时间，推荐上午11：30(最佳时机)　　陪同人员，最好3-4个(人多不一定能办好事情，最关键就是1，2个人而已，但去少了又不好砍价，以后就知道了)<br />
　&ldquo;带票最低多少?&rdquo;这种方法简单实用，但不高效，因为你出最后的牌，到后来就麻烦了。所以，问价先别问票的问题，先问最低价格!<br />
　　Jjbug的问法&ldquo;XXX机型有现货没有?&rdquo;<br />
　　&ldquo;有，你请坐&rdquo;(商家都这么说)<br />
　　第一次交锋开始。<br />
　　&ldquo;叫你们店长来说话&rdquo;<br />
　why?很简单，店长可以直接跟经理汇报，跟一些小虾米是浪费我们消费者时间。<br />
　　店长来了以后。<br />
　　第二次交锋开始。<br />
　　&ldquo;XXX机型现货，今天要，如果价位合适，我马上验机交钱走人。说嘛，买价!&rdquo;<br />
　　一定要把今天买，可以马上交钱说的非常非常非常清楚!!!!!!为什么?必须让商家彻底相信你马上会买。<br />
　　!!!注意!这时候商家会打电话或者计算后马上告诉你第一次报价，而第一次报价都是废话。不过废话必须听<br />
　 第四次交锋。<br />
　　你最好在他马上报第一次价的时候打断他!&ldquo;等等，朋友，我先告诉你，我已经去了A家B家(吹的，还没去，不过的确要去)，他们都已经报了两个不同的价位!所以，你最好问问你们经理后再答复我。&rdquo;<br />
　　为什么要强调问问经理?很简单，最低价格这些一般销售人员做不了主，只有经理再电话里面才能暗示。<br />
　　所以店长会重新思考后回答.<br />
　&ldquo;XXXX&rdquo;。<br />
　　第五次交锋。<br />
　　&ldquo;呵呵，你们都是XXXX牌子的直接经销商，货都差不多，价格就不一样了。我可以明说，A家B家价格不一样，但比你这个价格要实惠的多。我是今天买，不是来问价的，你要想做这笔生意就给我保个生意价。&rdquo;<br />
　　这时，一般店长会问&ldquo;他们多少，我们也可以多少!&rdquo;<br />
　一般消费者吹到这个时候就愣了。<br />
　Jjbug的惯用方法之一&ldquo;他们多少对你不重要，重要的是你能报出多少!&rdquo;<br />
砍价时候，最忌讳什么?露底!!!!切记切记!整个购买过程，不能透露一次你自己的心里价位或者价格!!!<br />
　　第六次交锋<br />
　　店长马上再次打电话，说&ldquo;最低XXXX&rdquo;。<br />
　　记住，价位的选择程度必须以平时的观察或者网上最低报价为基础。如果你认为接近你满意的价位了。你应该这么回复他。<br />
　　&ldquo;最低XXXX?那你先说说你送的东西&rdquo;<br />
　　这是必须注意，销售商跟厂商送的东西是两回事。不过，99%的销售商会把厂商送的东西说成是自己送的，马上戳穿!<br />
　　&ldquo;朋友，你最好弄清楚，包是笔记本本身出厂就自带的，你只是给个鼠标耳机而已，是不是原装鼠标?&rdquo;<br />
　　&ldquo;组装的&rdquo;<br />
&ldquo;这种组装的最多30￥一个，不行不行，你们送的东西太差了，人家A和B都送盘U盘 (吹的，但如果经验不够，建议大家别使用)&rdquo;<br />
　店长思考(估计对A跟B狠S了)<br />
他一般要思考下，你马上做工作，&ldquo;都是代理商，人家价格不输与你们，东西又比你们送的好&rdquo;(假装起身要走)<br />
　　&ldquo;好好好，我们也送个&rdquo;。<br />
　第七次交锋<br />
　　&ldquo;那好嘛，我也懒得过去，先说说验机条件，亮点暗点坏点你们的标准?&rdquo;<br />
　　&ldquo;我们按国家标准?(god damn)&rdquo;<br />
　　&ldquo;我的标准就是任何一点都不能出现，不管是屏幕任何位置，出现了马上换，这个我们要说清楚&rdquo;<br />
　　店长一般要请示经理。这个份上70-80%都同意。但有可能要说在屏幕边缘的不算，如果是我jjbug，我会坚持一个原则，一个点都不能有!!!!!!!!<br />
　&ldquo;那好，XXXX开正式发票&rdquo;。<br />
　　&ldquo;不可能，这个价位带票根本拿不到。&rdquo;<br />
　&ldquo;是吗?问你们经理。带票XXXX马上验机交钱走人(交钱说清楚!)&rdquo;<br />
　价位跟开票很关键，如果价位比你平时知道要低500以上，一般就是不开票的价位。<br />
　　强烈建议大家，一定要开票!开票砍价是我们必须条件!!!!!<br />
　店长又请示，&ldquo;好嘛，最终价格XXXX带票&rdquo;<br />
　　第8次交锋<br />
　话到这个份上，大家都认为可以了吧?<br />
　　错!这是砍价的一个小阶段而已!<br />
　　接下来，验机吗?<br />
　　不，接下来闪人吃饭，不然我为什么要选择11：30去砍价。^_^<br />
　那砍价砍了半天又不买?不是，是为了买而去砍价。<br />
　这第一家砍价就是为了在接下来的砍价中取得绝对的优势。<br />
　　所以选在马上中午时候，让商家知道吃饭是可以理解。<br />
　告诉店长&ldquo;那好，你中午1点在不?行，我们一点来提货验机，现在去吃饭，吃了饭就来，你别到时候变价格哦&rdquo;<br />
　(闪人也要有技巧，要安抚对方的心态，让他确定你能来提货，因为有可能第一家的价位就是最低的，这不一定,但是有时商家会提出交定金，我的回答只有一个，NO!)<br />
　　ok，拿个名片(用途上面以及介绍过了)，闪人吃饭去 写到这里给差不多了。　　严重警告，没有绝对的实战经验，别模仿我这样，因为有一定风险，会露馅的!<br />
　　最后给大家总结一下：<br />
　<br />
　1， 熟能生巧，要得到砍价良好的效果，没有平时的训练是不可能的<br />
　2， 砍价时候别顾及面子，但是要顾及银子。有时候顾及面子的您就必须多交钱<br />
　3， 能骗就骗，能吹就吹，能砍就砍，发挥超人的口才，掏尽每个商家的价格是最好的。然后自己统计一下就得到你可以拿到的价格了。<br />
　4， 砍价时候要做到面不改色，心不跳。另外，要让商家知道你是个行家(那怕你不是)<br />
　5， 带票，点子问题都是大家最关心的，什么时候问要注意时机，反正记住，只要让商家确定你要买，那一切问题就好商量<br />
　6， 要让商家知道你正在跟其他几个商家交涉^_^<br />
　7， 别随意透露自己手机号码(但是不要学习jjbug我的做法^_^)<br />
　8， 买笔记本要选人少时候去，顾客少就珍贵，时间要选好，别下午3点过后去买。时间不够<br />
　9， 多走几家多问几家<br />
　10，如果价格比平均价格少了800以上就要特别注意，很大可能是样品机!注意哦,如果被我们发现，商家的借口就是&ldquo;不好意思，样品机也是放在库房的，拿错了&rdquo;<br />
　11，最关键一点，不到最后验机成功自己满意，不要交钱!!!!!!!!!!!!</font><br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=113" /> 
	  <id>http://www.bycee.cn/default.asp?id=113</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[svchost进程详解]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=3" label="电脑/网络杂谈" /> 
	  <updated>2009-08-18T14:22:20+08:00</updated>
	  <published>2009-08-18T14:22:20+08:00</published>
		  <summary type="html"><![CDATA[<p><strong><font color="#ff0000">svchost.exe</font></strong><span style="color: #0000ff">是nt核心系统的非常重要的进程，对于2000、xp来说，不可或缺。很多病毒、木马也会调用它。所以，深入了解这个程序，是玩电脑的必修课之一。<br />
<br />
　　大家对windows操作系统一定不陌生，但你是否注意到系统中&ldquo;svchost.exe&rdquo;这个文件呢？细心的朋友会发现windows中存在多个&ldquo;svchost&rdquo;进程（通过&ldquo;ctrl+alt+del&rdquo;键打开任务管理器，这里的&ldquo;进程&rdquo;标签中就可看到了），为什么会这样呢？下面就来揭开它神秘的面纱。<br />
<br />
　　<b>发现</b><br />
<br />
　　在基于nt内核的windows操作系统家族中，不同版本的windows系统，存在不同数量的&ldquo;svchost&rdquo;进程，用户使用&ldquo;任务管理器&rdquo;可查看其进程数目。一般来说，win2000有两个svchost进程，winxp中则有四个或四个以上的svchost进程（以后看到系统中有多个这种进程，千万别立即判定系统有病毒了哟），而win2003server中则更多。这些svchost进程提供很多系统服务，如：rpcss服务（remoteprocedurecall）、dmserver服务（logicaldiskmanager）、dhcp服务（dhcpclient）等。<br />
<br />
　　如果要了解每个svchost进程到底提供了多少系统服务，可以在win2000的命令提示符窗口中输入&ldquo;tlist-s&rdquo;命令来查看，该命令是win2000supporttools提供的。在winxp则使用&ldquo;tasklist/svc&rdquo;命令。<br />
<br />
　　svchost中可以包含多个服务<br />
<br />
　　<b>深入</b><br />
<br />
　　windows系统进程分为独立进程和共享进程两种，&ldquo;svchost.exe&rdquo;文件存在于&ldquo;%systemroot%system32&rdquo;目录下，它属于共享进程。随着windows系统服务不断增多，为了节省系统资源，微软把很多服务做成共享方式，交由svchost.exe进程来启动。但svchost进程只作为服务宿主，并不能实现任何服务功能，即它只能提供条件让其他服务在这里被启动，而它自己却不能给用户提供任何服务。那这些服务是如何实现的呢？<br />
<br />
　　原来这些系统服务是以动态链接库（dll）形式实现的，它们把可执行程序指向svchost，由svchost调用相应服务的动态链接库来启动服务。那svchost又怎么知道某个系统服务该调用哪个动态链接库呢？这是通过系统服务在注册表中设置的参数来实现。下面就以rpcss（remoteprocedurecall）服务为例，进行讲解。<br />
<br />
　　从启动参数中可见服务是靠svchost来启动的。<br />
<br />
　　<b>实例</b><br />
<br />
　　以windowsxp为例，点击&ldquo;开始&rdquo;/&ldquo;运行&rdquo;，输入&ldquo;services.msc&rdquo;命令，弹出服务对话框，然后打开&ldquo;remoteprocedurecall&rdquo;属性对话框，可以看到rpcss服务的可执行文件的路径为&ldquo;c:\windows\system32\svchost-krpcss&rdquo;，这说明rpcss服务是依靠svchost调用&ldquo;rpcss&rdquo;参数来实现的，而参数的内容则是存放在系统注册表中的。<br />
<br />
　　在运行对话框中输入&ldquo;regedit.exe&rdquo;后回车，打开注册表编辑器，找到[hkey_local_machinesystemcurrentcontrolsetservicesrpcss]项，找到类型为&ldquo;reg_expand_sz&rdquo;的键&ldquo;magepath&rdquo;，其键值为&ldquo;%systemroot%system32svchost-krpcss&rdquo;（这就是在服务窗口中看到的服务启动命令），另外在&ldquo;parameters&rdquo;子项中有个名为&ldquo;servicedll&rdquo;的键，其值为&ldquo;%systemroot%system32rpcss.dll&rdquo;，其中&ldquo;rpcss.dll&rdquo;就是rpcss服务要使用的动态链接库文件。这样svchost进程通过读取&ldquo;rpcss&rdquo;服务注册表信息，就能启动该服务了。<br />
<br />
　　<b>解惑</b><br />
<br />
　　因为svchost进程启动各种服务，所以病毒、木马也想尽办法来利用它，企图利用它的特性来迷惑用户，达到感染、入侵、破坏的目的（如冲击波变种病毒&ldquo;w32.welchia.worm&rdquo;）。但windows系统存在多个svchost进程是很正常的，在受感染的机器中到底哪个是病毒进程呢？这里仅举一例来说明。<br />
<br />
　　假设windowsxp系统被&ldquo;w32.welchia.worm&rdquo;感染了。正常的svchost文件存在于&ldquo;c:\windows\system32&rdquo;目录下，如果发现该文件出现在其他目录下就要小心了。&ldquo;w32.welchia.worm&rdquo;病毒存在于&ldquo;c:\windows\system32wins&rdquo;目录中，因此使用进程管理器查看svchost进程的执行文件路径就很容易发现系统是否感染了病毒。windows系统自带的任务管理器不能够查看进程的路径，可以使用第三方进程管理软件，如&ldquo;windows优化大师&rdquo;进程管理器，通过这些工具就可很容易地查看到所有的svchost进程的执行文件路径，一旦发现其执行路径为不平常的位置就应该马上进行检测和处理。<br />
<br />
　　由于篇幅的关系，不能对svchost全部功能进行详细介绍，这是一个windows中的一个特殊进程，有兴趣的可参考有关技术资料进一步去了解它。</span></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=112" /> 
	  <id>http://www.bycee.cn/default.asp?id=112</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[教你认识汽车标志 ]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=12" label="奇趣生活" /> 
	  <updated>2009-08-18T14:01:52+08:00</updated>
	  <published>2009-08-18T14:01:52+08:00</published>
		  <summary type="html"><![CDATA[教你认识汽车标志 <br/><span style="color:#ff0000">以前和朋友在一起一谈起车我就插不进话，主要是连车的标志都不认识几个，后来就学习了一</span> <br/><br/>　　<span style="color:#ff0000">下，再不是汽车白痴了，我觉得每个人都应该学习一下，毕竟我们以后都要买车开车懂车嘛</span> <br/><br/>　　<span style="color:#ff0000">大家如果觉得好就分享一下，或者顶一下，谢谢</span> <br/><br/>　　<span style="color:blue">奥迪AUDI: </span><br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/126_52/19/04/d5/1904d5q119ad6.180d3c.jpg" border="0" alt=""/>　 <br/><br/>　　<span style="color:darkorchid">奥迪轿车的标志为四个圆环，代表着合并前的四家公司。这些公司曾经是自行车、摩托车及小客车的生产厂家。由于该公司原是由4家公司合并而成，因此每一环都是其中一个公司的象征。</span> <br/><br/>　　<span style="color:blue">奔驰BENZ:</span><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/94_96/1c/03/25/1c0325cq113774.1ac231.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">1909年6月申请戴姆勒公司登记了三叉星做为轿车的标志，象征着陆上、水上和空中的机械化.1916年在它的四周加上了一个圆圈，在圆的上方镶嵌了4个小星，下面有梅赛德斯“Mercedes”字样。“梅赛德斯”是幸福的意思，意为戴姆勒生产的汽车将为车主们带来幸福。</span> <br/><br/>　　<span style="color:blue">大众VOLKSWAGEN:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/95_93/18/01/c6/1801c63q1193e1.127890.jpg" border="0" alt=""/> <br/><br/>　<span style="color:darkorchid">　大众汽车公司的德文Volks Wagenwerk，意为大众使用的汽车，标志中的VW为全称中头一个字母。标志象是由三个用中指和食指作出的“V”组成，表示大众公司及其产品必胜－必胜－必胜。</span> <br/>　　<span style="color:blue">丰田TOYOTA:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/120_78/1f/02/51/1f02512q11920d.635f27.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">丰田公司的三个椭圆的标志是从1990年初开始使用的。标志中的大椭圆代表地球，中间由两个椭圆垂直组合成一个T字，代表丰田公司。它象征丰田公司立足于未来，对未来的信心和雄心，还象征着丰田公司立足于顾客，对顾客的保证，象征着用户的心和汽车厂家的心是连在一起的，具有相互信赖感，同时喻示着丰田的高超技术和革新潜力。</span><br/><br/>　　<span style="color:blue">福特FORD:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/164_72/18/02/12/1802129q118282.5455cc.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">福特汽车的标志是采用福特英文Ford字样，蓝底白字。由于创建人亨利·福特喜欢小动物，所以标志设计者把福特的英文画成一只小白兔样子的图案。</span> <br/><br/>　　<span style="color:blue">宝马MW:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/124_93/1a/03/9d/1a039dq114e09.09a3dc.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">宝马标志中间的蓝白相间图案，代表蓝天，白云和旋转不停的螺旋浆，喻示宝马公司渊源悠久的历史，象征该公司过去在航空发动机技术方面的领先地位，又象征公司一贯宗旨和目标：在广阔的时空中，以先进的精湛技术、最新的观念，满足顾客的最大愿望，反映了公司蓬勃向上的气势和日新月异的新面貌。</span> <br/><br/>　　<span style="color:blue">劳斯莱斯ROLLS-ROYCE:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/88_102/19/01/53/1901537q11939f.0f7cfa.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">劳尔斯·罗劳易斯汽车的标志图案采用两个“R”重叠在一起，象征着你中有我，我中有你，体现了两人融洽及和谐的关系。劳尔斯·劳易斯的标志除了双R之外，还有著名的飞人标志。这个标志的创意取自巴黎卢浮宫艺术品走廊的一尊有两千年历史的胜利女神雕像，她庄重高贵的身姿是艺术家们产生激情的源泉。当汽车艺术品大师查尔斯·塞克斯应邀为罗尔斯·罗易斯汽车公司设计标志时，深深印在他脑海中的女神像立刻使他产生创作灵感。于是一个两臂后伸，身带披纱的女神像飘然而至。</span> <br/><br/>　　<span style="color:blue">法拉利FERRARI:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/76_117/16/03/c3/1603c38q113e1e.b1c437.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">法拉利车的标志是一匹跃起的马,在第一次世界大战中意大利有一位表现非常出色的飞行员；他的飞机上就有这样一匹会给他带来好运气的跃马。在法拉利最初的赛车比赛获胜后。该飞行员的父母亲---一对伯爵夫妇建议：法拉利也应在车上印上这匹带来好运气的跃马。后来这位飞行员战死了，马就变成了黑颜色；而标志底色为公司所在地摩德纳的金丝雀的颜色。</span> <br/><br/>　　<span style="color:blue">标致PEUGEOT:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/102_101/1a/02/54/1a02549q118b70.e04c78.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">标致汽车公司的前身，是19世纪初标致家族皮埃尔兄弟开办的一家生产拉锯、弹簧等铁制工具的小作坊。这些铁制品的商标是一个威武的雄狮，它是公司所在地弗南修·昆蒂省的标志，有不可征服的喻意。体现了标致拉锯的三大优点：锯齿象雄狮的牙齿久经耐磨、锯身象狮子的脊梁骨富有弹性、拉锯的性能象狮子一样所向无阻。当1890年，第一辆标致汽车问世时，为表明它的高品质，公司决定仍沿用“雄狮”商标。</span> <br/><br/>　　<span style="color:blue">阿斯顿·马丁ASTONMARTIN:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/151_61/12/04/13/1204134q118dbd.6cd476.jpg" border="0" alt=""/> <br/><br/><span style="color:darkorchid">　　阿斯顿·马丁汽车标志为一只展翅飞翔的大鹏，分别注有奥斯顿、马丁英文字样。喻示该公司象大鹏一样，具有从天而降的冲刺速度和远大的志向。</span> <br/><br/>　　<span style="color:blue">本特利(宾利)(Bentley):</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/100_36/1c/01/24/1c01242q1199f7.ac5733.jpg" border="0" alt=""/> <br/><br/><span style="color:darkorchid">　尔特·欧文·本特利1919年生产第一辆四汽缸赛车时车上就带有一个徽章，上面是一对隼鹰翅膀簇拥着本特利的开头字母“Ｂ”。现在四汽缸汽车已不再生产，而“Ｂ”字徽章仍是本特利(宾利)的象征。本特利轿车标志是以公司名的第一个字母“B”为主体，生出一对翅膀，似凌空翱翔的雄鹰，此标志一直沿用至今。</span> <br/><br/><span style="color:blue">　　林肯LINCOLN: </span><br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/67_118/1f/04/64/1f0464bq119584.78bc4c.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">林肯（LINCOLN）汽车是福特汽车公司拥有的第二个品牌。镶嵌在车头正中长形围绕的十字星，象征着尊严和庄重。林肯汽车公司是亨利．利兰先生于1907年创立的，1922年被福特汽车公司收购。初期以生产飞机发动机为业。林肯汽车是第一个以总统的名字命名的品牌，专为总统和国家元首生产的高档轿车。由于林肯车杰出的性能、高雅的造型和无与伦比的舒适，自1939年美国的富兰克林．罗斯福总统以来，一直被白宫选为总统专车。</span><br/>　　<span style="color:blue">美洲虎JAGUAR:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/143_87/19/02/e4/1902e4fq11824d.a3455f.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">美洲虎汽车的名字起源，则可追溯到一九三七年。该年六月SS汽车公司正式接收了Sunbeam(Wolverhampton)汽车公司。当时，里昂斯爵士十分希望能把汽车名为Sunbeam，因为Sunbeam曾于多次的世界赛车中取得冠军，可谓“胜利”的标志。可惜，公司内部出现了一些问题。最后，被迫放弃使用Sunbeam作为公司的名字。里昂斯爵士最后拣选了一个在各种语言中都发音清脆的名字—Jaguar，它是根据第一次世界大战的一种飞行机器而命名。美洲虎又称捷豹，香港人还称“积架”，缘由英文JAGUAR的音译，它的汽车标识被设计成一只纵身跳跃的美洲虎，造型生动、形象简练、动感强烈，蕴含着力量、节奏与勇猛。</span> <br/><br/>　　<span style="color:blue">雪佛兰CHEVROLET:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/143_64/14/03/15/1403156q114597.373f3d.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">雪佛兰商标表示了图案化了的蝴蝶结，Chevrolet是瑞士的赛车手、工程师路易斯·雪佛兰的名字。</span> <br/><br/>　　<span style="color:blue">雷克萨斯LEXUS:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/158_92/1e/03/21/1e0321aq11520a.513fd0.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">雷克萨斯的标志取车名的英文第一个字母，即LEXUS的第一个字母“L”。</span> <br/><br/>　　<span style="color:blue">兰博基尼LAMBORGHINI:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/99_81/1e/01/96/1e01960q118e68.2d63bb.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">公司的标志是一头浑身充满了力气，正准备向对手发动猛烈的攻击。据说兰伯基尼本人就是这种不甘示弱的牛脾气，也体现了兰伯基尼公司产品的特点，因为公司生产的汽车都是大功率、高速的运动型轿车。车头和车尾上的商标省去了公司名，只剩下一头犟牛。</span> <br/><br/>　　<span style="color:blue">凯迪拉克CADILLAC:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/110_70/16/03/04/1603047q1148e1.ef29f6.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">选用“凯迪拉克”之名是为了向法国的皇家贵族、探险家、美国底特律城的创始人安东尼·门斯·凯迪拉克表示敬意，商标图形主要由冠和盾组成。冠象征着凯迪拉克家族的纹章，冠上7颗珍珠喻示皇家的贵族血统。盾象征着凯迪拉克军队的英勇善战。盾分为4个等分。第一和第四等分是门斯家族的全底纹章，中间横穿过的深褐色棒把三只相同的黑鸟分开，两只在上，一只在下。这三只鸟意味三味一体的神圣，还意味着大胆和热情的基督教武士智慧、富有、聪敏的头脑和它完美的品德。第二和第三等分是由于内部通婚，当另一块领土加到门斯家族的财产上时，这些4等分才能在门斯盾形纹章里被采用。4等分内采用的色彩表明了广阔的土地，增色了门斯家族的名望，红色标志着行动的勇敢和大胆；银色表示团结、博爱、美德和富有。横穿的棒表示了在十字军战争的骑士们的勇敢。凯迪拉克商标是底特律城创始人的祖先的英勇和荣誉。 </span><br/>　　<span style="color:blue">阿尔法-罗蜜欧ALFAROMEO:</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/103_101/19/02/82/190282eq117efe.5e926e.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">阿尔法.罗米欧的标志于30年代初就开始使用，这是米兰市的市徽，也是中世纪米兰的领主维斯康泰公爵的家徽，标志中的十字部分来源于十字军从米兰向外远征的故事；右边部分是米兰大公的徽章；关于蛇正在吞食撒拉迅人的图案有种种传说，其中之一的说法是象征着维斯康泰的祖先曾经击退了使人民遭受苦难的“龙”。总之，这枚古老的徽章伴同阿尔法.罗米欧运动车已名扬四海，成为当今的知名商标之一。</span> <br/><br/>　　<span style="color:blue">沃尔沃</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/93_86/1e/04/5f/1e045fq11927c.6155ef.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">“沃尔沃”（VOLVO），也译为“富豪”。车标由图标和文字商标两部分组成。沃尔沃图形车标是由双圆环组成车轮的形状，并有指向右上方的箭头。中间的拉丁语文字“VOLVO”，是滚滚向前的意思，寓意着沃尔沃汽车的车轮滚滚向前和公司兴旺发达、前途无量。</span> <br/><br/>　　<span style="color:blue">马自达</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/108_81/17/02/55/1702557q1184f3.5ef85f.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">马自达汽车公司的原名为东洋工业公司，生产的汽车用公司创始人“松田”来命名，又因“松田”的拼音为MAZDA（马自达），所以人们便习惯称为马自达。 <br/><br/>　　马自达起初使用的车标，是在椭圆之中有双手捧着一个太阳，寓意马自达公司将拥有明天，马自达汽车跑遍全球。 <br/><br/>　　马自达公司与福特公司合作之后，采用了新的车标，椭圆中展翅飞翔的海鸥，同时又组成“M”字样。“M”是“MAZDA”第一个大写字母，预示该公司将展翅高飞，以无穷的创意和真诚的服务，迈向新世纪。</span> <br/>　　<span style="color:blue">旁蒂克</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/79_104/1d/01/65/1d01659q118cf4.13fb15.jpg" border="0" alt=""/> <br/><br/>　<span style="color:darkorchid">　旁蒂克（PONTIAC）车标，由字母和图形两部分组成。字母“PONTIAC”，取自美国密执安州的一个地名：图形车标是带十字标记的箭头。而十字形标记，则表示旁蒂克是通用汽车公司的重要成员，也象征旁蒂克汽车安全可*；箭头则代表旁蒂克的技术超前和攻关精神，预示着旁蒂克汽车跑遍全球。</span> <br/><br/>　　<span style="color:blue">莲花</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/97_104/16/01/4d/16014dq119eb3.fe10b8.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">莲花车标，是在椭圆形底板上镶嵌着抽象了的莲花造型，上面除了有“莲花”（LOTUS）字样外，还以创始人查普曼姓名全称（A．C．B．CHAPMAN）的四个英文字母“A．C．B．C”叠加在一起而成。 <br/><br/>　　莲花公司是英国人查普曼1951年创立的，主要生产跑车，由于规模小，在激烈的竞争中几经易手，现落户到意大利的菲亚特汽车公司。</span> <br/>　<span style="color:blue">　雷诺 </span><br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/90_109/1c/03/c6/1c03c61q113fe6.24308d.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">1898年，路易斯．雷诺三兄弟在法国比仰古创建雷诺汽车公司。它是世界上最悠久的汽车公司之一。主要产品有雷诺牌轿车、公务用车和运动车等。 <br/><br/>　　雷诺车标是四个菱形拼成的图案，象征雷诺三兄弟与汽车工业融为一体，表示“雷诺”能在无限的（四维）空间中竞争、生存、发展。</span> <br/>　　<span style="color:blue">通用别克</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/113_110/13/03/41/130341eq11513f.3afa2f.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">别克（BUICK）商标中形似“三利剑”的图案为共图形商标，被安装在汽车散热器格栅上。那三把颜色不同的利剑（从左到右分别为红、白、蓝三种颜色），依次排列在不同的高度位置上，给人一种积极进取、不断攀登的感觉，它表示别克采用顶级技术，别克人是勇于登峰的勇士。</span> <br/>　　<span style="color:darkorchid">别克（BUICK）轿车的英文车标来源于该公司的创始人大卫．别克的姓氏。而整个商标是一只展翅的雄鹰即将落在别克的英文字母上。它象征着别克是雄鹰最理想的栖息之地，正应了中国的那句谚语：“家有梧桐树，才能招来金凤凰。”</span> <br/>　　<span style="color:blue">保时捷</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/99_108/16/02/13/160213q118b5b.43a5c4.jpg" border="0" alt=""/> <br/><br/>　<span style="color:darkorchid">　保时捷的英文车标采用德国保时捷公司创始人费迪南德．保时捷的姓氏。图形车标采用公司所在地斯图加特市的盾形市徽。“PORSCHE”字样在商标的最上方，表明该商标为保时捷设计公司所拥有；商标中的“STUTTCART”字样在马的上方，说明公司总部在斯图加特市；商标中间是一匹骏马，表示斯图加特这个地方盛产一种名贵种马；商标的左上方和右下方是鹿角的图案，表示斯图加特曾是狩猎的好地方；商标右上方和左下方的黄色条纹代表成熟了的麦子颜色，喻指五谷丰登，商标中的黑色代表肥沃土地，商标中的红色象征人们的智慧和对大自然的钟爱，由此组成一幅精湛意深、秀气美丽的田园风景画，展现了保时捷公司辉煌的过去，并预示了保时捷公司美好的未来，保时捷跑车的出类拔萃！</span> <br/><br/>　<span style="color:blue">　欧宝</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/90_72/1e/01/a3/1e01a3cq118a39.1e3771.jpg" border="0" alt=""/> <br/><br/><span style="color:darkorchid">　　凡是经常看电视体育频道节目的观众，都会在大型国际球类比赛中看到“圆圈闪电”的徽记，那就是德国欧宝汽车的标识。“圆圈闪电”，即意味着欧宝汽车的力量和速度是无与伦比的；欧宝公司永远充满着生机与活力。 <br/><br/>　　德国欧宝公司是美国通用汽车公司的子公司，是通用公司在欧洲的一个窗口。它由亚当．欧宝所创立，至今已有百多年历史。由于欧宝公司对足球世界杯、欧锦赛、戴维斯杯、联盟杯网球赛等世界重大球类比赛的赞助，使得欧宝公司在体育领域有很高的声望，无疑也给其带来丰厚的回报。目前，欧宝的产品已遍及世界20多个国家的100多个市场。欧宝轿车已连续5年保持了西欧轿车头号品牌的位置，占据了西欧轿车市场12%的份额。</span> <br/><br/>　　<span style="color:blue">菲亚特</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/96_98/18/04/41/1804413q119b25.b8a547.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">意大利菲亚特公司创建于1899年7月，至今已有百余年历史。现在菲亚特是意大利最为重要的汽车制造中心及最大的私有企业集团。该集团建立初期只生产轿车，然后产品很快多样化，领域涉及商用车辆、船舶、飞机、火车、农用拖拉机及建筑机械等。如今菲亚特已成为世界上最大的工业集团之一。该集团有218个生产厂和138个研究开发中心，在世界上59个国家拥有850多个公司，拥有237000名雇员，其利税已超过510亿美元。 <br/><br/>　　菲亚特（FIAT）意大利都灵汽车制造厂（Fabbrica Itliana Auto-mobi Ledi Torino）的译文缩写“fiat”在英语中的词意为“法会”、“许可”、“批准”。该公司的标识一直沿用“FIAT”，只是形状和色彩有不同的改进。如1921年为红字白底圆形标识；1931年使用了字体纵向拉工的商标；1959年因公司推出了新款车而把车标做大，边角做圆；1965年把桂枝缠绕的红底白字圆形标识作为正式标志；1968年成立股份公司出现了四个方块中各有一个字母的新标识；1991年出厂的菲亚特600型则改用前脸是5条斜拉直杠，后部仍为四方块的标识。</span> <br/><br/>　　<span style="color:blue">罗孚</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/93_104/19/01/25/1901258q1196b1.792408.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">Rover Mascot(吉祥物)源自世界上最著名的流浪族——维京人的双关语。而“Rover”这个词，英语中包含流浪者、航海者的意思。 <br/><br/>　　从1902年起，这个标志便放在了一辆辆汽车前正中的位置上。 <br/><br/>　　20世纪20年代，戴头盔的维京人形象和三角形徽章吸引了一代喜爱Rover车的年轻人。 <br/><br/>　　后来，Rover标志中站立的维京人逐渐让位于他的头像，不过他仍然带着头盔。准确而符合逻辑地说，是让位于维京人大海船的船头雕像。 <br/><br/>　　维京人海船的船首和帆于1929年首次出现在散热器的标志牌上，它作为吉祥象征贯串于Rover 车的百年历史。</span> <br/><br/>　　<span style="color:blue">现代</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/102_101/1b/04/95/1b04954q119a21.042bbd.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">1947年，郑周永创建现代汽车公司，经50多年的发展，它已成为韩国最大的汽车生产厂家，并进入世界著名汽车大公司行列。其商标是在椭圆中采用斜体字“H“，“H“是现代汽车公司英文名“HYUNDAI“的第一个大写字母。 “现代“首先体现了“2000年在世界上腾飞的现代汽车公司“这一概念；其次还象征现代汽车公司在和谐与稳定中发展。商标中的椭圆即代表汽车的方向盘，又可以看作是地球，与其间的H结合在一起恰好代表了现代汽车遍布全世界的意思。</span> <br/>　　<span style="color:blue">斯柯达</span> <br/><br/>　<img src="http://pimg.qihoo.com/qhimg/jingyan/110_70/12/01/13/120113bq1191de.13e658.jpg" border="0" alt=""/> <br/>　　<span style="color:darkorchid">“斯柯达“商标的含义是：巨大的圆环象征着斯柯达为全世界无可挑剔的产品；鸟翼象征着技术进步的产品行销全世界；向右飞行着的箭头，则象征着先进的工艺；外环中朱黑的颜色象征着斯柯达公司百余年的传统；中央铺着的绿色，则表达了斯柯达人对资源再生和环境保护的重视。 现在生产的斯柯达 ． 弗雷西亚牌汽车的商标最下边部分的桂枝树叶，表示胜利。 另外，关于“斯柯达“商标还有一个传说：据说，该厂的经理从美洲带回一名印第安仆人，这个人很勤快，脸谱也很美，所以就选用了他的脸谱作为商标，即现在的斯柯达箭形商标。</span> <br/><br/>　　<span style="color:blue">克莱斯勒</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/110_90/17/03/a5/1703a5fq114725.d9110f.jpg" border="0" alt=""/> <br/>　　<span style="color:darkorchid">克莱斯勒（Chrysler）公司是创始人沃尔特．克莱斯勒的姓氏命名的汽车公司。图形商标像一枚五角星勋章，它体现了克莱斯勒家族和公司员工们的远大理想和抱负，以及永远无止境的追求和在竞争中获胜的奋斗精神。五角星的五个部分，分别表示五大洲都在使用克莱斯勒汽车公司的汽车，克莱斯勒汽车公司的汽车遍及全世界。</span> <br/><br/>　　<span style="color:blue">铃木</span> <br/><br/>　　 <img src="http://pimg.qihoo.com/qhimg/jingyan/147_102/1d/04/e4/1d04e43q11991d.df996f.jpg" border="0" alt=""/> <br/>　　<span style="color:darkorchid">铃木商标图案是的S是SUZAUKI的第一个商标图案中的S是SUZUKI的第一个大写字母， <br/><br/>　　它给人以无穷力量的感觉，象征无限发展的铃木汽车公司。 <br/><br/>　　1909年铃木先生在静冈县滨名郡创建了铃木织机制作所，1954年改称铃木汽车工业公司。 <br/><br/>　　公司主要生产微型轿车、轻型货车、摩托车等。从1979年以来，公司生产的微型汽车在日本销售量居首位，铃木SPORT SWIFTGTI曾在亚洲太平洋拉力锦标赛上夺魁。1983年，该公司与中国重庆长安汽车有限公司合作生产奥拓微型轿车，已经在国内微型汽车领域占有重要的地位，有疯狂小老鼠之称。</span> <br/><br/>　　<span style="color:blue">雪铁龙</span> <br/><br/>　　<img src="http://pimg.qihoo.com/qhimg/jingyan/102_101/11/04/61/1104612q11a1d1.057c50.jpg" border="0" alt=""/> <br/><br/>　　<span style="color:darkorchid">1900年，安德烈·雪铁龙发明了人字形齿轮。1912年，安德列·雪铁龙开始用人字形齿轮作为雪铁龙公司产品的商标。后来，雪铁龙曾组织过横穿非洲大陆和横越亚洲大陆的两次旅行，使雪铁龙汽车名声大振。 法国人生性开朗，爱赶时髦，喜欢新颖和漂亮，&#34;雪铁龙&#34;轿车就表现了法兰西这种性格，每时每刻都在散发着法国的浪漫气息。</span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=111" /> 
	  <id>http://www.bycee.cn/default.asp?id=111</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[子网掩码与计算机IP]]></title>
	  <author>
		 <name>zhangbinwei</name>
		 <uri>http://www.bycee.cn/</uri>
		 <email>zbw369@qq.com</email>
	  </author>
	  <category term="" scheme="http://www.bycee.cn/default.asp?cateID=3" label="电脑/网络杂谈" /> 
	  <updated>2009-08-17T10:22:57+08:00</updated>
	  <published>2009-08-17T10:22:57+08:00</published>
		  <summary type="html"><![CDATA[<p><span style="color: #0000ff">子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。</span></p>
<p><span style="color: #0000ff">最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后，如果得出的结果是相同的，则说明这两台计算机是处于同一个子网络上的，可以进行直接的通讯。就这么简单。</span></p>
<p><span style="color: #0000ff">请看以下示例：</span></p>
<p><span style="color: #0000ff">运算演示之一：aa<br />
I P 地址　 192.168.0.1<br />
子网掩码　 255.255.255.0<br />
AND运算</span></p>
<p><span style="color: #0000ff">转化为二进制进行运算：<br />
I P 地址　11010000.10101000.00000000.00000001<br />
子网掩码　11111111.11111111.11111111.00000000<br />
AND运算</span></p>
<p><span style="color: #0000ff">　　　　　11000000.10101000.00000000.00000000<br />
转化为十进制后为：</span></p>
<p><span style="color: #0000ff">　　　　　　192.168.0.0</span></p>
<p><span style="color: #0000ff">运算演示之二：<br />
I P 地址　 192.168.0.254<br />
子网掩码　 255.255.255.0<br />
AND运算</span></p>
<p><span style="color: #0000ff">转化为二进制进行运算：<br />
I P 地址　11010000.10101000.00000000.11111110<br />
子网掩码　11111111.11111111.11111111.00000000<br />
AND运算</span></p>
<p><span style="color: #0000ff">　　　　　11000000.10101000.00000000.00000000<br />
转化为十进制后为：</span></p>
<p><span style="color: #0000ff">　　　　　　192.168.0.0</span></p>
<p><span style="color: #0000ff">运算演示之三：<br />
I P 地址　 192.168.0.4<br />
子网掩码　 255.255.255.0<br />
AND运算</span></p>
<p><span style="color: #0000ff">转化为二进制进行运算：<br />
I P 地址　11010000.10101000.00000000.00000100<br />
子网掩码　11111111.11111111.11111111.00000000<br />
AND运算</span></p>
<p><span style="color: #0000ff">　　　　　11000000.10101000.00000000.00000000<br />
转化为十进制后为：</span></p>
<p><span style="color: #0000ff">　　　　　　192.168.0.0</span></p>
<p><span style="color: #0000ff">　　通过以上对三组计算机IP地址与子网掩码的AND运算后，我们可以看到它运算结果是一样的。均为192.168.0.0</span></p>
<p><span style="color: #0000ff">　　所以计算机就会把这三台计算机视为是同一子网络，然后进行通讯的。我现在单位使用的代理服务器，内部网络就是这样规划的。</span></p>
<p><span style="color: #0000ff">也许你又要问，这样的子网掩码究竟有多少了IP地址可以用呢？你可以这样算。<br />
根据上面我们可以看出，局域网内部的ip地址是我们自己规定的（当然和其他的ip地址是一样的），这个是由子网掩码决定的通过对255.255.255.0的分析。可得出：<br />
　　前三位IP码由分配下来的数字就只能固定为192.168.0　　所以就只剩下了最后的一位了，那么显而易见了，ip地址只能有（2的8次方-1），即256-1=255一般末位为0或者是255的都有其特殊的作用。</span></p>
<p><span style="color: #0000ff">那么你可能要问了:如果我的子网掩码不是255.255.255.0呢？你也可以这样做啊假设你的子网掩码是255.255.128.0</span></p>
<p><span style="color: #0000ff">那么你的局域网内的ip地址的前两位肯定是固定的了（什么，为什么是固定的？你看上边不就明白了吗？）</span></p>
<p><span style="color: #0000ff">这样，你就可以按照下边的计算来看看同一个子网内到底能有多少台机器</span></p>
<p><span style="color: #0000ff">1、十进制128 = 二进制1000 0000</span></p>
<p><span style="color: #0000ff">2、IP码要和子网掩码进行AND运算</span></p>
<p><span style="color: #0000ff">3、<br />
I P 地址　00010000.01001001.1*******.********<br />
子网掩码　11111111.11111111.10000000.00000000<br />
AND运算</span></p>
<p><span style="color: #0000ff">　　　　　00010000.01001001.10000000.00000000<br />
转化为十进制后为：</span></p>
<p><span style="color: #0000ff">　　　　　　16 . 73 . 128 . 0</span></p>
<p><span style="color: #0000ff">4、可知我们内部网可用的IP地址为：</span></p>
<p><span style="color: #0000ff">00010000.01001001.10000000.00000000<br />
　　　　　　　到<br />
00010000.01001001.11111111.11111111</span></p>
<p><span style="color: #0000ff">5、转化为十进制：</span></p>
<p><span style="color: #0000ff">16.73.128.0 到 16.73.255.255</span></p>
<p><span style="color: #0000ff">6、0和255通常作为网络的内部特殊用途。通常不使用。</span></p>
<p><span style="color: #0000ff">7、于是最后的结果如下：我们单位所有可用的IP地址为：<br />
192.168.128.1-192.168.128.254<br />
192.168.129.1-192.168.129.254<br />
192.168.130.1-192.168.130.254<br />
192.168.131.1-192.168.131.254<br />
. . . . . . . . . . . . .<br />
192.168.139.1-192.168.139.254<br />
192.168.140.1-192.168.140.254<br />
192.168.141.1-192.168.141.254<br />
192.168.142.1-192.168.142.254<br />
192.168.143.1-192.168.143.254<br />
. . . . . . . . . . . . .<br />
192.168.254.1-192.168.254.254<br />
192.168.255.1-192.168.255.254</span></p>
<p><span style="color: #0000ff">8、总数为(255-128+1)*(254-1+1) =128 * 254 = 32512</span></p>
<p><span style="color: #0000ff">9、看看的结果是否正确</span></p>
<p><span style="color: #0000ff">　　(1)、设定IP地址为192.168.128.1</span></p>
<p><span style="color: #0000ff">　　　　Ping 192.168.129.233通过测试</span></p>
<p><span style="color: #0000ff">　　　　访问http://192.168.129.233可以显示出主页</span></p>
<p><span style="color: #0000ff">　　(2)、设定IP地址为192.168.255.254</span></p>
<p><span style="color: #0000ff">　　　　Ping 192.168.129.233通过测试</span></p>
<p><span style="color: #0000ff">　　　　访问http://192.168.129.233可以显示出主页</span></p>
<p><span style="color: #0000ff">10、结论</span></p>
<p><span style="color: #0000ff">　　以上证明我们的结论是对的。现在你就可以看你的子网中能有多少台机器了</span></p>
<p><span style="color: #0000ff">255.255.255.128<br />
分解：<br />
11111111.11111111.11111111.1000000<br />
所以你的内部网络的ip地址只能是<br />
xxxxxxxx.xxxxxxxx.xxxxxxxx.0???????<br />
到<br />
xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111<br />
</span></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.bycee.cn/article.asp?id=110" /> 
	  <id>http://www.bycee.cn/default.asp?id=110</id>
  </entry>	
		
</feed>

