Vba Excel转换子函数

Vba Excel转换子函数,vba,excel,Vba,Excel,我是VBA新手,编写了一个子程序,将粘贴单元格从一个文档复制到另一个文档中。更准确地说,我在文档1中工作,其中有几个产品的名称(都在“A”列中)。对于这些产品,我需要在第二个文档中查找某些变量(例如销售) 子例程做得很好,但我想将其用作函数,也就是说,我想通过键入单元格“=functionname(productname)”来调用子例程 我非常感谢您的宝贵意见! 最好的,安德烈亚斯 Sub copy_paste_data() Dim strVerweis As String

我是VBA新手,编写了一个子程序,将粘贴单元格从一个文档复制到另一个文档中。更准确地说,我在文档1中工作,其中有几个产品的名称(都在“A”列中)。对于这些产品,我需要在第二个文档中查找某些变量(例如销售)

子例程做得很好,但我想将其用作函数,也就是说,我想通过键入单元格“=functionname(productname)”来调用子例程

我非常感谢您的宝贵意见! 最好的,安德烈亚斯

Sub copy_paste_data()

Dim strVerweis As String               
Dim Spalte                     
Dim Zeile                      
Dim findezelle1 As Range          
Dim findezelle2 As Range          
Dim Variable                    
Dim Produkt                     

'Variable I need to copy from dokument 2
Variable = "frequency"



'Produkt I need to copy data from document 2
Produkt = Cells(ActiveCell.Row, 1)



'path, file and shhet of document 2
Const strPfad = "C:\Users\Desktop\test\"          
Const strDatei = "Bezugsdok.xlsx"           
Const strBlatt = "post_test"              

'open ducument 2
Workbooks.Open strPfad & strDatei
Worksheets(strBlatt).Select

Set findezelle = ActiveSheet.Cells.Find(Variable)
Spalte = Split(findezelle.Address, "$")(1)

Set findezelle2 = ActiveSheet.Cells.Find(Produkt)
Zeile = Split(findezelle2.Address, "$")(2)



'copy cell that I need
strZelle = Spalte & Zeile                  'Zelladresse
strVerweis = "'" & strPfad & "[" & strDatei & "]" & strBlatt & "'!" & strZelle

'close document 2
Workbooks(strDatei).Close savechanges:=False



With ActiveCell
   .Formula = "=IF(" & strVerweis & "="""",""""," & strVerweis & ")"    
   .Value = .Value                                                      
End With

End Sub

下面是一个示例,用于创建只包含单元格前3个字母的函数:

Public Function FirstThree(Cell As Range) As String
    FirstThree = Left(Cell.Text, 3)
End Function
在Excel工作表中使用此选项如下:

=FirstThree(b1)

如果子系统工作正常,并且您只想让调用更容易,那么可以添加热键来执行宏。在“开发人员”选项卡中,单击宏,然后单击选项。然后,您可以添加快捷键(Crtl+“您想要的键”)它可以是已经使用过的快捷键,如C、V、S,但您将丢失这些功能(复制、粘贴保存、打印)

谢谢!到目前为止,我就是这样实现它的。如果您对如何将其作为功能运行提出任何建议,我们将不胜感激!