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