Excel将子转换为函数

时间:2016-09-21 14:02:37

标签: excel vba excel-vba

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

子程序很好地完成了这项工作,但是我想把它用作函数,即我想通过输入一个单元格来调用sub" = 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

2 个答案:

答案 0 :(得分:0)

这是一个创建一个只带来一个单元格的前三个字母的函数的例子:

Public Function FirstThree(Cell As Range) As String
    FirstThree = Left(Cell.Text, 3)
End Function

在Excel工作表中使用它就像:

=FirstThree(b1)

答案 1 :(得分:0)

如果子工作正常,你只想让它更容易调用,你可以添加一个热键来执行宏。在开发人员选项卡中,单击宏,然后单击选项。然后你可以添加一个快捷键(Crtl +“你想要的键”它可以是一个已经用过的快捷键,比如C,V,S,但是你会失去那些功能(复制,粘贴保存,打印) enter image description here