我有一个小问题。我从事产品开发工作,每年管理 100 多个项目,给定项目的运行时间是流动的,有些需要比计划完成的时间更长,而另一些则更快。对于每个项目,时间/成本工作簿都会设置计划成本/时间,然后在项目完成后估算实际成本/时间。到目前为止,每个表格都是手动创建、填写并保存到一个文件夹中的,这些文件的名称从未相同,并且最终以不同的标题格式结束。这使得审查项目的年平均成本/运行时间变得非常困难。
这个想法是使时间/成本工作簿的创建更简单。
工作流程:
- 打开工作簿“项目”
- 在 A 列输入项目编号:xxx-yyyy-zz(xxx = 项目编号 | yyyy = 年份 | zz = 项目类型)
- 在 B 列中输入项目名称
- 选择带有项目点击按钮“Create_Open”的行
- 使用模板创建新工作簿
- 项目编号 和项目名称被复制到模板
- 工作簿以文件名保存(项目编号“_”项目名称“.xml”)
那部分很简单,代码如下,它看起来不是很好,但它完成了工作。
Function FileExists(FullFileName As String) As Boolean
'returns TRUE if the file exists
FileExists = Len(Dir(FullFileName)) > 0
End Function
Sub Create_Workbook()
Dim selRow As Integer
Dim file_path As String
Dim file_extension As String
file_path = "...dir" ' Speicherpfad festlegen
file_extension = ".xls" ' Speichermedium festlegen
selRow = ActiveCell.Row 'aktive Zeile finden
If Range("A" & selRow) = "" Then ' prüfen ob Zeile ein Projekt enthält
MsgBox ("Bitte eine ausgefullte Zeile auswählen")
End
End If
project_nr = Mid(Range("A" & selRow), 1, 11) ' zuweisen Projekt-Nr.
project_be = Mid(Range("B" & selRow), 1, 100) ' zuweisen Projekt Bezeichnung
'If Workbook Exists Open if not Create and write to Workbook
If Not FileExists(file_path & project_nr & "_" & project_be & file_extension) Then
'Workbook null setzen und Template laden
Set new_workbook = Nothing 'null setzen
Set new_workbook = Workbooks.Add(Template:="dir") 'Postfach laufwerk einstellen
'Projekt-Nr. und Projektbezeichnung in Controllingblatt speichern
Range("C1") = project_be 'Projektbezeichnung setzen
Range("C2") = project_nr 'Projektnummer setzen
Range("C3") = Format(Date, "mm-dd-yyyy") 'Heutiges Datum setzen
'Workbook speichern "Projekt-Nr._Projektbezeichnung"
new_workbook.SaveAs Filename:=file_path & project_nr & "_" & project_be & file_extension
Else
Workbooks.Open file_path & project_nr & "_" & project_be & file_extension
End If
End Sub
现在是我有解决所有问题的母亲的部分。在 A 列中搜索一年,一旦找到来自给定年份的项目,就会打开相应的工作簿。一系列单元格从打开的工作簿复制到项目列表工作簿中的新工作表。单元格的范围被粘贴到新的工作表中,该工作表给出了搜索年份的名称。搜索循环遍历 A 列的所有行,直到它到达一个空行。
工作流程:
- Buttonclick 打开用户窗口“输入年份”
- 在没有年份输入的情况下单击确定按钮返回错误
- 输入年份 点击 OK 按钮
- 创建具有输入年份标题的新工作表
- 在 A 列中搜索年份。
- 一旦从打开项目工作簿的对应年份找到项目
- 从工作簿复制一系列单元格
- 将单元格范围粘贴到步骤 4 中工作表中的项目列表工作簿
- 关闭在步骤 6 中打开的工作簿
- 循环 5-9 直到空单元格
到目前为止,我所拥有的并不多(代码如下),我遇到了坚固的墙壁。我想知道是否有人可以帮助我,或者我的逻辑是否完全有缺陷,我应该从头开始并以不同的方式构建系统。
Private Sub cmdOK_Click()
If Len(Me.TextBox1 & "") = 0 Then ' prüfen ob Zeile ein Projekt enthält
MsgBox ("Bitte Jahr eingeben")
Else
'Loop through cells on a sheet to find strFind1
End If
End Sub
任何帮助深表感谢。