将单元格值复制到不同的工作簿

时间:2016-08-24 05:54:38

标签: excel vba excel-vba variables

首先,如果这个问题已在其他地方得到解答,请告诉我。我好好看,但找不到任何可以帮助我的东西。

其次,我确信有一个更简单的方法可以做到这一点,但我是VBA的新手,而我只是在努力教我自己。

好的,所以我的工作簿末尾有一张工作表,它编译了上一张工作表中的信息,我希望将第2行中的所有值复制到另一个我们有网络驱动器的工作簿中。

我设法让它在同一张工作表上工作但不能在另一张工作簿上工作(不使用用户表单)。

它返回了该行的错误“无效限定符” Cells(emptyRow,1.Value - DateRaised.Value

以下是我的代码,

Sub CommandButton1_Click()

Dim emptyRow As Long
Dim DateRaised As Long
Dim CustomerName As String
Dim SiteAddress As String
Dim CallReason As String
Dim CustomerOrderNo As Long
Dim InvoiceNo As Long
Dim CovernoteNo As Long
Dim Findings As String
Dim ProductType As String
Dim Supplier As String
Dim Attempts As Long
Dim Condition As String
Dim DateClosed As Long
Dim CreditGiven As String
Dim CreditValue As Long
Dim IssueDays As Long
Dim Comments As String

DateRaised = Cells(2, "A").Value
CustomerName = Cells(2, "B").Value
SiteAddress = Cells(2, "C").Value
CallReason = Cells(2, "D").Value
CustomerOrderNo = Cells(2, "F").Value
InvoiceNo = Cells(2, "G").Value
CovernoteNo = Cells(2, "H").Value
Findings = Cells(2, "I").Value
ProductType = Cells(2, "J").Value
Supplier = Cells(2, "K").Value
Attempts = Cells(2, "L").Value
Condition = Cells(2, "M").Value
DateClosed = Cells(2, "N").Value
CreditGiven = Cells(2, "O").Value
CreditValue = Cells(2, "P").Value
IssueDays = Cells(2, "Q").Value
Comments = Cells(2, "R").Value

Dim WrkBk As Workbook
Dim WrkSht As Worksheet

Set WrkBk = Workbooks.Open("R:\6024 Onsite\COVER NOTE WORKFLOW\Database\Covernote Databse.xlsx")
Set WrkSht = WrkBk.Sheets("Covernote Database")
WrkSht.Activate
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

Cells(emptyRow, 1).Value = DateRaised.Value
Cells(emptyRow, 2).Value = CustomerName.Value
Cells(emptyRow, 3).Value = SiteAddress.Value
Cells(emptyRow, 4).Value = CallReason.Value
Cells(emptyRow, 5).Value = CustomerOrderNo.Value
Cells(emptyRow, 6).Value = InvoiceNo.Value
Cells(emptyRow, 7).Value = CovernoteNo.Value
Cells(emptyRow, 8).Value = Findings.Value
Cells(emptyRow, 9).Value = ProductType.Value
Cells(emptyRow, 10).Value = Supplier.Value
Cells(emptyRow, 11).Value = Attemps.Value
Cells(emptyRow, 12).Value = Condition.Value
Cells(emptyRow, 13).Value = DateClosed.Value
Cells(emptyRow, 14).Value = CreditGiven.Value
Cells(emptyRow, 15).Value = CreditValue.Value
Cells(emptyRow, 16).Value = IssueDays.Value
Cells(emptyRow, 17).Value = Comments.Value

WrkBk.Close (SaveChanges = False)

End Sub

如果有人能指出我正确的方向,我会是一个非常幸福的人。

1 个答案:

答案 0 :(得分:2)

它是因为您尝试将类型(如StringLong)变量视为reference类型(对象)调用他们的Value属性:

Cells(emptyRow, 1).Value = DateRaised.Value

虽然你不能(除非你使用用户定义类型): value 类型变量只能按原样访问:

Cells(emptyRow, 1).Value = DateRaised

但你可以简单地编写如下代码:

Option Explicit

Sub CommandButton1_Click()
    Dim emptyRow As Long
    Dim curSht As Worksheet

    Set curSht = ActiveSheet
    With Workbooks.Open("R:\6024 Onsite\COVER NOTE WORKFLOW\Database\Covernote Databse.xlsx").Sheets("Covernote Database")
        emptyRow = WorksheetFunction.CountA(.Range("A:A")) + 1
        .Cells(emptyRow, 1).Resize(, 17).value = curSht.Cells(2, 1).Resize(, 17).value '<-- paste values from originally opened sheet range A2:Q2
    End With
    ActiveWorkbook.Close SaveChanges:=False
End Sub
相关问题