Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将公式化值以静态形式粘贴到另一列中的代码_Vba_Excel - Fatal编程技术网

Vba 将公式化值以静态形式粘贴到另一列中的代码

Vba 将公式化值以静态形式粘贴到另一列中的代码,vba,excel,Vba,Excel,下面是一段代码,每当刷新数据并运行宏时,我必须将两个单元格中的信息记录到一个单元格中。顶部工作正常。我很难理解的部分是“End Sub”前面的最后一行。代码的这一部分采用G3中给出的值,并将其粘贴到D列中的下一个可用行中(这与代码的顶部完全分开)。我的问题是它没有从第2行开始将其粘贴到D列中。而是从第27行开始粘贴T列中的值 我试着把代码弄得乱七八糟,看看是否能让代码从第2行开始粘贴到D列,但我没有运气 Sub TimeStamp() ' ' TimeStamp Macro ' ' Keyboa

下面是一段代码,每当刷新数据并运行宏时,我必须将两个单元格中的信息记录到一个单元格中。顶部工作正常。我很难理解的部分是“End Sub”前面的最后一行。代码的这一部分采用G3中给出的值,并将其粘贴到D列中的下一个可用行中(这与代码的顶部完全分开)。我的问题是它没有从第2行开始将其粘贴到D列中。而是从第27行开始粘贴T列中的值

我试着把代码弄得乱七八糟,看看是否能让代码从第2行开始粘贴到D列,但我没有运气

Sub TimeStamp()
'
' TimeStamp Macro
'
' Keyboard Shortcut: Ctrl+Shift+T
'
    ActiveCell.Formula = "=CONCATENATE(L1,N1)"
    ActiveCell.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   Application.CutCopyMode = False

   ActiveSheet.Columns(4).SpecialCells(xlCellTypeLastCell).Offset(1, 0).Value2 = Range("G3").Value2
End Sub

这将使你的宏工作

Sub TimeStamp()
' TimeStamp Macro
' Keyboard Shortcut: Ctrl+Shift+T
    With ActiveCell
        .Formula = "=CONCATENATE(L1,N1)"
        .Cells = .Value
    End With

    With ActiveSheet
        .Cells(Rows.Count, "D").End(xlUp).Offset(1, 0) = .Range("G3").Value2
    End With

End Sub
虽然我不太愿意推荐使用ActiveCell和ActiveSheet,但您并没有提供足够的细节来明确引用它们。我怀疑ActiveCell实际上是G3,但这并不确定


有关摆脱依靠选择和激活来实现目标的更多方法,请参阅。

这将使宏正常工作

Sub TimeStamp()
' TimeStamp Macro
' Keyboard Shortcut: Ctrl+Shift+T
    With ActiveCell
        .Formula = "=CONCATENATE(L1,N1)"
        .Cells = .Value
    End With

    With ActiveSheet
        .Cells(Rows.Count, "D").End(xlUp).Offset(1, 0) = .Range("G3").Value2
    End With

End Sub
虽然我不太愿意推荐使用ActiveCell和ActiveSheet,但您并没有提供足够的细节来明确引用它们。我怀疑ActiveCell实际上是G3,但这并不确定


有关摆脱依靠选择和激活来实现目标的更多方法,请参阅。

G3不是活动单元格。该单元格包含插入D列的值。活动单元格是时间戳所在的位置。然而,这是完美的,我感谢你的帮助和有用的网站。您知道为什么在这段代码中,连接公式最终会执行“换行文本”吗?Excel用于任意指定换行文本单元格格式的规则从来都不清楚,但无论是使用
=L1&N1
还是
=concatenate(L1,N1),似乎都是一致的
。我通过记录自己使单元格列不被包裹来修复它。感谢您的帮助@Jeepedi尝试使用相同的代码
.Cells(Rows.Count,“D”).End(xlUp).Offset(1,0)=.Range(“G3”).Value2'
作为列
A
而不是列
D
,并切换
L1和N1
G3
,或将范围部分替换为
.Formula=“=串联(L1,N1)”
。这两种方法似乎都不起作用,我正在尝试做与以前相同的事情,只是范围不再是1个单元格。现在,两个细胞结合成一个。“你认为你可能有解决办法吗?”那个菜鸟-对不起,我不能理解你问题的范围。如果你的新情况不同到足以打破这个公认的答案,那么它应该作为一个新问题提出,并对情况进行新的描述。您可以返回此线程并将现有代码粘贴到新问题中。G3不是活动单元格。该单元格包含插入D列的值。活动单元格是时间戳所在的位置。然而,这是完美的,我感谢你的帮助和有用的网站。您知道为什么在这段代码中,连接公式最终会执行“换行文本”吗?Excel用于任意指定换行文本单元格格式的规则从来都不清楚,但无论是使用
=L1&N1
还是
=concatenate(L1,N1),似乎都是一致的
。我通过记录自己使单元格列不被包裹来修复它。感谢您的帮助@Jeepedi尝试使用相同的代码
.Cells(Rows.Count,“D”).End(xlUp).Offset(1,0)=.Range(“G3”).Value2'
作为列
A
而不是列
D
,并切换
L1和N1
G3
,或将范围部分替换为
.Formula=“=串联(L1,N1)”
。这两种方法似乎都不起作用,我正在尝试做与以前相同的事情,只是范围不再是1个单元格。现在,两个细胞结合成一个。“你认为你可能有解决办法吗?”那个菜鸟-对不起,我不能理解你问题的范围。如果你的新情况不同到足以打破这个公认的答案,那么它应该作为一个新问题提出,并对情况进行新的描述。您可以返回到该线程并将现有代码粘贴到新问题中。