我是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
答案 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