如何使用IF语句来输出和粘贴当前剪贴板数据

时间:2018-04-05 15:57:59

标签: excel vba excel-vba

我编写了一个脚本,将来自其他工作簿的数据复制并粘贴到不同工作簿的列中。但是,我的代码是静态的,只运行一次。我要做的是将单元格复制并粘贴到新工作簿上,然后下次代码运行时,它将检测到范围内已有数据并转移到正确的单元格。

我正在玩下面的IF声明然后我撞墙了。我怀疑我必须将我复制的数据放入某种变量形式然后调用它?现在它只是输入数字" 1"转移....我明白为什么会这样......我只是没有足够的知识知道如何插入已经复制到剪贴板中的内容。

Sub makepropercellselection()

Dim rng As Range
Dim cellval As Range

Set cellval = Range("E9")

cellval.Select
If IsEmpty(cellval) = True Then
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Else
    cellval.Offset(0, 1) = 1
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End If

End Sub

2 个答案:

答案 0 :(得分:0)

您不需要将复制的信息存储在单元格中。它存储在Windows剪贴板中。

副本的基本示例&粘贴

Range("A1").Copy Range("A2")

复制A1并将副本粘贴到A2

副本的基本示例&粘贴值:

Range("A1").Copy
Range("B2").PasteSpecial xlPasteValues

复制A1并仅将值粘贴到A2

答案 1 :(得分:0)

你总是从E9开始并且只偏移1个单元而不是继续搜索第9行中的第一个空白单元。一种方式是这样的。如果你继续运行它,它会在F9,G9,H9等中加1。

Sub makepropercellselection()

Dim c As Long
Dim DataObj As MSForms.DataObject

Set DataObj = New MSForms.DataObject
On Error GoTo err1
DataObj.GetFromClipboard
mystring = DataObj.GetText(1)
c = Cells(9, Columns.Count).End(xlToLeft).Column + 1
Cells(9, WorksheetFunction.Max(5, c)).PasteSpecial
Exit Sub

err1:
   If Err <> 0 Then MsgBox "Data on clipboard is not text or is empty"

End Sub