Excel宏 - 可以解释一下吗?

时间:2011-03-09 21:06:08

标签: excel vba excel-2003

我是Excel宏的新手..

有人能告诉我这个宏的作用吗?

Sub People_Add_Document()

    prow = ActiveCell.row
    num = Cells(prow, 1).Value
    wshet = ActiveSheet.Name

    If (Val(num) > 0) _
       And (Cells(4, 1).Value = "#") _
       And (wsheet = People_wsheet) _
    Then
        people_select_link_to_Document process_wbook_path, prow
    End If
  End Sub



Sub people_select_link_to_Document(process_wbook_path, prow)

        If Len(Cells(prow, DocumentFile).Value) = 0 Then
        Fname = Application.GetOpenFilename("Document Files (*.doc;*.pdf),*.doc;*.pdf", 1, "Select the Document file..")

        If Fname <> False Then

            Cells(prow, DocumentFile).Value = Fname 'global path

        End If

    End If

End Sub

1 个答案:

答案 0 :(得分:5)

获取活动单元格的行号:

prow = ActiveCell.row

获取该行第1列的值:

num = Cells(prow, 1).Value

阅读有效工作表的名称(此处有错误,应该是wsheet而不是wshet):

wshet = ActiveSheet.Name

测试num是否大于0,单元格A4包含“#”且活动工作表等于名为People_wsheet的变量或常量。如果是这样,则使用参数people_select_link_to_Documentprocess_wbook_path

调用名为prow的子例程
If (Val(num) > 0) _
   And (Cells(4, 1).Value = "#") _
   And (wsheet = People_wsheet) _
Then
    people_select_link_to_Document process_wbook_path, prow
End If

现在,该子例程首先检查活动行的DocumentFile列是否为空。实际上,测试空虚是一种相当蹩脚的方法,但它可能会这样做。

    If Len(Cells(prow, DocumentFile).Value) = 0 Then

如果它是空的,那么我们会显示一个文件对话框来获取文件名:

    Fname = Application.GetOpenFilename("Document Files (*.doc;*.pdf),*.doc;*.pdf", 1, "Select the Document file..")

如果选择了文件名(即未取消对话框),我们会将该文件名保存在活动行的DocumentFile列中以供将来参考:

    If Fname <> False Then

        Cells(prow, DocumentFile).Value = Fname 'global path

    End If

就是这样!