用窗体上的组合框来选择打开哪个月的工资表。 Private Sub UserForm_Initialize() Dim MyMonth As String MyMonth = Month(Date) '取得当前月份 ComboBox1.RowSource = "月份" ComboBox1.ListIndex = MyMonth - 1 '下拉框显示的是当前的月份 用上述代码使组合框显示的月份始终是当月的月份,这样基本上就不用选择了。 用Open的方法打开从工资软件中导出的工资表,因为SQL、ADO咱不会,现学也来不及,只好用苯方法,打开取数。在打开时用代码将选项中的[任务栏中的窗口]去掉,这样感觉的不打开工作表取数差不多,呵呵。 代码如下: Application.ShowWindowsInTaskbar = True
'取消任务栏中的窗口选项 MyMonth = ComboBox1.Value '取得要导入的月份 Workbooks.Open ThisWorkbook.Path & "\工资表\" & MyMonth & "工资表.xls" '打开该月份的工资表 ThisWorkbook.Activate 打开后用Find方法,以唯一的人员编号为依据在工资表中查找数据后写入工资表中。一开始用的是姓名查找,因为姓名重复,查找后会有错误,后来改用唯一的人员编号为依据。 For sh = 1 To Workbooks(MyMonth & "工资表.xls").Sheets.Count '从该月的所有工资表中循环[共有3张] With Workbooks(MyMonth & "工资表.xls").Sheets(sh).Range("A:A") '从所有工资表的A列查找 For I = 2 To R - 1 Set Rng = .Find(What:=Cells(I, 1).Value) '用人员编号查询 If Not Rng Is Nothing Then For L = 2 To 27 '导入工资表中的数据 Cells(I, L + 1).Value = Rng.Offset(0, L).Value Cells(1, 29).Value = MyMonth '在表中记录当前数据的月份 Cells(R, L + 1).FormulaR1C1 = "=SUM(R[-139]C:R[-1]C)" '写入列的合计公式 Cells(R, L + 1) = Cells(R, L + 1).Value '公式改成数值 Next End If Next End With Next
[此贴子已经被作者于2007-5-15 1:07:18编辑过] |