vba函数将一个单元格和pastespecial复制到我写入的活动单元格= macrofunction

时间:2015-03-05 18:56:59

标签: excel vba excel-vba

在制作vba函数时,我想简单地复制一个固定单元格,并将其值粘贴到同一工作表中突出显示的单元格(选中的单元格,我输入宏函数)。当我从编辑器中运行宏但是使用公式的宏不能将单元格粘贴到我正在编写函数的单元格时,这是有效的。如果我写入C2 = macropasteC1 我的宏叫做macropastec1 我得到#NAME而不是C1中的数字 虽然当我在vba编辑器中选择c2运行宏时,虽然我丢失了确切的公式

但它确实有效

就像是

 'Sub macropastec1()

   macropastec1 Macro

  Selection.Copy
  cell("C1").Select
 active.PasteSpecial Paste:=xlPasteValues**,Operation:=xlNone,SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False**
End Sub`

我不记得究竟是怎么得到它的范围。(C1)。选择 但它与上面类似。我开始记录它然后我插入宏复制它并更改子功能以获得宏功能

请帮助我真的需要这种能力

另一个在编辑器中用于激活cel并在编辑器中运行的变体我认为是

 'function macropastec1()

   macropastec1 Macro

  Selection.Copy
  range.("C1").Select
 activecell.PasteSpecial Paste:=xlPasteValues**,Operation:=xlNone,SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False**
End function`

obvioulsy因为你需要一个宏函数来从一个带有= function

的单元格中运行它

很难复制,但我认为我想要实现的目标明确

抱歉,这并没有真正回答,但它确实澄清了被问到的问题

c1中的宏功能,如果来自不断变化的单元格,则说c3 所以在c1我有

Function Min_Cell2(cx34 As Range)
'Function for defining the lowest number in a cell selected by the user

If Minimum <> "" Then
If Value_Range.Value < Minimum Then Minimum = Value_Range.Value
Else
Minimum = Value_Range.Value
End If

Min_Cell = Minimum

End Function

或最大等价物。所以我需要它来粘贴特殊值而不更新它..

我认为偶然的功能就是这个

Function macropastec2()
macropastec2 = Range("C1").Value
End Function

给出 进入一个单元格= macropastec2(C1)

#VALUE

Function macropastec2() As varient
macropastec2 = Range("C1").Value
End Function

给出

#NAME

:S 如果它有帮助我认为原始功能可以简化为类似

'function macropastec1()

   macropastec1 Macro

  Selection.Copy
  range.("C1").Select
 activecell.PasteSpecial Paste:=xlPasteValues**,
End function`

2 个答案:

答案 0 :(得分:2)

您可以使用以下功能:

Function macropastec1() As Variant
    macropastec1 = Range("C1").Value
End Function

如果您需要指定特定工作表,可以在函数中添加:

Function macropastec1() As Variant
    macropastec1 = Sheets("SheetName").Range("C1").Value
End Function

VBA模块应如下所示: enter image description here

更改C1时,此功能更新单元格值。

您可以通过以下方式在任何单元格中使用它:

=macropastec1()

演示:

1)在单元格A1中输入=macropastec1()enter image description here

2a)如果我们改变C1:

enter image description here

2b)A1 更改:

enter image description here

3a)如果我们现在在A2中输入=macropastec1()

enter image description here

3b)我们看到新值,而第一个值保持不变:

enter image description here

答案 1 :(得分:1)

  

在制作vba功能时,我想简单地复制一个固定的单元格   将其值专门粘贴到同一工作表中突出显示的单元格。

标准模块中包含以下内容:

Public Function macropastec1(r As Range)
    macropastec1 = r.Value
End Function

您可以使用工作表,如:

enter image description here

修改#1:

如果想要控制复制/粘贴,请使用 Sub 而不是 UDF()

在同一标准模块中包含以下 Sub

Public Sub macropastSC1()
    Range("C1").Copy
    ActiveCell.PasteSpecial (xlPasteValues)
End Sub
  1. sub仅在您决定运行时运行
  2. 您必须先选择目标单元格
  3. 如果 C1 包含公式,目标单元格将获得该值。
  4. 请记住

    工作表单元格中的 UDF 只能将值返回到它所在的单元格。它无法更改工作表中的其他单元格。