Excel vba粘贴复制到变量中的值(application.onkey)

Excel vba粘贴复制到变量中的值(application.onkey),excel,vba,Excel,Vba,我会解释我的问题是什么,我想得到什么,我想怎么做,但我做不到 所以首先我需要的是 我有一些日历,上面有一些日期,如下所示: 我要做的是在另一个单元格中复制一个值(字符串),但如果在另一个单元格中有一个值(字符串),则在将值和复制的值连接到其他字符串之前,类似于: 在互联网上阅读,我找到了我需要的东西,但我无法让它工作, 我想将用ctrl+c复制的值传递到一个变量中,然后用自定义快捷方式粘贴到另一个单元格中,如果在单元格中有某些内容,它们会将字符串连接起来,如上图所示 我曾想过这样的代码,但效

我会解释我的问题是什么,我想得到什么,我想怎么做,但我做不到

所以首先我需要的是

我有一些日历,上面有一些日期,如下所示:

我要做的是在另一个单元格中复制一个值(字符串),但如果在另一个单元格中有一个值(字符串),则在将值和复制的值连接到其他字符串之前,类似于:

在互联网上阅读,我找到了我需要的东西,但我无法让它工作, 我想将用ctrl+c复制的值传递到一个变量中,然后用自定义快捷方式粘贴到另一个单元格中,如果在单元格中有某些内容,它们会将字符串连接起来,如上图所示

我曾想过这样的代码,但效果并不明显

    Sub g()
    Application.OnKey "^e", "test"

     End Sub


  Sub TEST()
 Dim l As String
  l = PasteSpecial

  If ActiveCell.Value <> "" Then
       ActiveCell.Value& " " & l
   ElseIf ActiveCell.Value = "" Then
         ActiveCell.Value = l
  End If


  End Sub
subg()
Application.OnKey“^e”,“test”
端接头
子测试()
把l调成线
l=特殊
如果ActiveCell.Value为“”,则
ActiveCell.Value&“”&l
ElseIf ActiveCell.Value=”“然后
ActiveCell.Value=l
如果结束
端接头
我知道我写的东西看起来很愚蠢,但我不知道安基是如何工作的

提前谢谢


Cristiano

请尝试下一个测试代码。可对其进行调整,以进行范围迭代:

Sub TEST()
 Dim l As String
  l = "My String"

  ActiveCell.value = ActiveCell.value & IIf(ActiveCell.value = "", "", " + ") & l
End Sub
或者从另一个单元格中获取值:

Sub TEST()
 Dim l As String
  l = ActiveCell.Offset(0, 2).Value 'the value in the second column refering the active cell

  ActiveCell.value = ActiveCell.value & IIf(ActiveCell.value = "", "", " + ") & l
End Sub
已编辑

我最后一次尝试:

Sub testCopyfromTheSameRow()
  Dim ICol As Long
  
  ICol = 3 'The column number where the value to be copied
   ActiveCell.value = ActiveCell.value & ActiveSheet.cells(ActiveCell.row, ICol).value

End Sub
我终于做到了

这是我通过@faneduru建议找到的解决方案

子测试()


End Sub

对于特定单元格,或者对于多个此类单元格之间的迭代,您需要它吗?那么,从何处获取要添加的值?不,不是针对我需要的特定单元格,一次一个单元格,但该单元格可以是anywhere@FaneDuru该值可以从任何单元格中获取,但在同一行中,我发布了一个代码,用于调整您的值。。。这是您需要的吗?@FaneDuru代码可以,但“我的字符串”(代码中的l)应该是我以前用ctrl+c复制的值,这将取活动单元格第二列中的值作为l,但该列不固定。我需要取同一行中的值,但来自不同的列。我尝试了这一子粘贴SpecialLadd()如果ActiveCell.value=”“,则ActiveCell.PasteSpecial xlPasteAll其他ActiveCell.PasteSpecial Paste:=xlPasteAll,操作:=xlAdd End If End Sub,但它不work@Cristiano莫雷西:你确定你知道你需要什么吗,恕我冒犯?如果是的话,你能试着问一个让我们明白该怎么做的问题吗?“不同的栏目”应该是什么意思?当然,我发布的是一个例子。。。我问过你关于迭代的事,你什么也没说。如果你需要一段代码来做“你需要什么”,你必须更好地解释这个概念的含义。当然没有冒犯,是的,我知道我需要什么,只是我不能让它工作,好的,我会尽力解释我自己better@Cristiano莫雷西:在测试代码之前,诺在剪贴板上放了什么东西吗?我的意思是,您是否在要粘贴其值的单元格上按了Ctrl+C?你了解剪贴板的概念吗?最好避免使用剪贴板。修改现有单元格值时,它将保持其格式。是否要手动复制单元格,然后使用上述代码?简单使用Activecel.Value=TheOtherCell.Value更简单、更快。当然,正如你在我之前的建议中所看到的那样,调节空白。是的,我想手动复制,然后使用上面的代码,是的,这更简单,但我不知道要复制哪个单元格,因为我发现手动复制更容易,然后粘贴代码。如果你无法确定必要的单元格查找背后的逻辑,代码对您毫无帮助。您可以更快地手动粘贴复制的值。。。但是,你可以想怎么做就怎么做。@faneduru我可能找到了一种避免使用剪贴板的方法,只是出于好奇为什么最好避免使用剪贴板?请原谅我的手工问题,并感谢您的帮助代码简单需要更多的Excel资源和代码不是太快。如果你找到了这样的方法,对你有好处!即使不需要找任何东西。我的回答清楚地表明了如何从这个角度出发。。。
    Dim l As String
      l = ActiveCell.Value

    If ActiveCell.Value = "" Then
       ActiveCell.PasteSpecial xlvalue
    Else
       ActiveCell.PasteSpecial Paste:=xlvalue
       ActiveCell.Value = l & ActiveCell.Value
    End If