Excel应用与操作
Excel 97/VBA技术讲座之三
2005-02-24 12:26:23

   添加数据后的K线图 2. 创建分解的宏    根据分解后的简单工作,按照上一节介绍的工作步骤,采用录制宏的方法创建三个宏:Import_Data、Copy_Data和Update_Chart。由于篇幅所限,不一一介绍具体录制宏的具体操作。以下给出录制、编辑后的VBA宏。     Sub Import_Data() ' 导入股票行情数据 ' 快捷键: Ctrl+Shift+I     Workbooks.Open FileName:="F:\EXCEL\ST1.XLS"    Selection.AutoFilter     Selection.AutoFilter Field:=2, Criteria1:="沈阳万利"     Range("A1:K9").Select    Selection.Copy     Sheets.Add     ActiveSheet.Paste    Range("A:C,H:J").Select     Range("C1").Activate     Application.CutCopyMode = False     Selection.Delete Shift:=xlToLeft     Range("A2:E2").Select     Selection.Copy     Range("A3").Select     Selection.PasteSpecial Paste:=xlAll, _         Operation:=xlNone, SkipBlanks:=False, _        Transpose:=True End Sub Sub Copy_Data() ' 复制股票行情数据 ' 快捷键: Ctrl+Shift+C     Windows("ST1.XLS").Activate     Range("A3:A7").Select     Selection.Copy     Windows("ST2.XLS").Activate     Range("A2").Select     Selection.End(xlToRight).Select     ActiveCell.Offset(0, 1).Range("A1").Select     ActiveSheet.Paste End Sub Sub Update_Chart() ' 更新K线图 ' 快捷键: Ctrl+Shift+U     Sheets("K线图").Select     ActiveChart.SeriesCollection.Extend _         Source:=Sheets("沈阳万利").Range("CS2:CS6"),_         Rowcol:=xlRows, CategoryLabels:=FalseEnd Sub     请注意,Import_Data宏中的文件名、路径名会因操作的环境不同,后半部分主要是关于工作表行列转置的操作的宏语句,具体操作方法可以参见联机帮助中“转置行与列”。Copy_Data宏中的Selection.End(xlToRight).Select语句表示选定当前行的最后一个包含数据的单元格(操作时按Ctrl+→键)。语句ActiveCell.Offset(0, 1).Range("A1").Select中的Offset属性表示相对引用,这里表示选定当前单元格同一行右边相临的单元格,其中的Range("A1")是虚拟单元格,并不表示实际的A1单元格。这样就保证了该宏的通用性。可以每次将数据都复制到指定工作表的最后一列。当需要使用相对引用时,在录制相应操作前单击“停止录制”按钮右边的“相对引用”按钮即可。     3. 装配宏现在已有了完成各个步骤的宏:     Import_Data:导入股票行情数据。     Copy_Data:将股票行情数据复制到个股数据工作表。     Update_Chart:更新K线图。     下面的工作是将其装配在一起。最简单的方法仍然是使用宏记录器,只是这次要录制的是运行其它宏的宏。首先单击“录制宏”按钮,键入宏的名称“Auto_Add”,单击“确定”。然后单击“运行宏”按钮,逐个运行Import_Data、Copy_Data、Update_Chart宏。最后单击“停止录制”按钮。录制的宏如下:     Sub Auto_Add( )     Application.Run “ST2.xls!Import_Data”     Application.Run “ST2.xls!Copy_Data     Application.Run “ST2.xls!Update_Chart End Sub 实际上宏名称前面的“Application.Run “ST2.xls!”可以简化掉,而不影响宏的运行。