【发布时间】:2017-06-13 16:24:28
【问题描述】:
我不知道出了什么问题,但是每当我运行宏时,它都会给我一个运行时错误 91 对象变量或未设置块变量。对此的总结是,我只想从只读工作簿(主)复制名称(Sakinah),列 A:Q 并粘贴到 Sakinah 列 A:Q。现在,复制部分工作正常,只是粘贴部分。这段代码输入到 Sakinah 中,我将其定义为 Thisworkbook 我不确定出了什么问题。请帮忙。
以下是我的代码:我突出显示了发生错误的部分:
Sub Update_ReadOnly_Click()
Dim copyStartCellSakinah As Long
Dim excelFilePath
Dim masterWorkBook As Workbook
Dim readLastCell As Long
Dim manager As String
Dim A
Dim B
Dim C
Dim d
Dim E
Dim F
Dim G
Dim H
Dim I
Dim J
Dim K
Dim L
Dim M
Dim N
Dim O
Dim P
Dim Q
Dim sheet As String
Dim sakinahWorkBookPath As String
Dim masterWorkBookPath As String
Dim Sakinahworkbook As ThisWorkbook
excelFilePath = Application.ActiveWorkbook.Path
masterWorkBookPath = excelFilePath & "\Master.xlsm"
Set masterWorkBook = Workbooks.Open(masterWorkBookPath, ReadOnly = True)
'get copy row
copyStartCellSakinah = 4
readLastCell = masterWorkBook.Sheets("Master").Cells(Rows.Count,
1).End(xlUp).Row + 1
For x = 4 To readLastCell
cell = "C" & x
manager = masterWorkBook.Worksheets("Master").Range(cell).Value
If UCase(manager) = "SAKINAH" Then
sheet = "Sakinah"
cell = "A" & x
A = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "B" & x
B = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "C" & x
C = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "D" & x
d = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "E" & x
E = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "F" & x
F = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "G" & x
G = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "H" & x
H = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "I" & x
I = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "J" & x
J = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "K" & x
K = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "L" & x
L = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "M" & x
M = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "N" & x
N = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "O" & x
O = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "P" & x
P = masterWorkBook.Worksheets("Master").Range(cell).Value
cell = "Q" & x
Q = masterWorkBook.Worksheets("Master").Range(cell).Value
'到目前为止一切都很好,但是当我进入 Sakinahworkbook.worksheets(sheet) 时,它给了我一个错误。
'copy
cell = "A" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = A
cell = "B" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = B
cell = "C" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = C
cell = "D" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = d
cell = "E" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = E
cell = "F" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = F
cell = "G" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = G
cell = "H" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = H
cell = "I" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = I
cell = "J" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = J
cell = "K" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = K
cell = "L" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = L
cell = "M" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = M
cell = "N" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = N
cell = "O" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = O
cell = "P" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = P
cell = "Q" & copyStartCellSakinah
Sakinahworkbook.Worksheets(sheet).Range(cell).Value = Q
copyStartCellSakinah = copyStartCellSakinah + 1
End If
Next x
' CLOSE THE SOURCE FILE.
masterWorkBook.Close True ' FALSE - DON'T SAVE THE SOURCE FILE.
Set masterWorkBook = Nothing
Application.EnableEvents = True
'Me.Visible = True
MsgBox "Updated Successfully"
End Sub
【问题讨论】:
-
使用
range而不是您的代码进行调查可能会更整洁,所以range("a" & x & ":"q" & x).offset(更整洁,而且您的a 到q 实际上并没有有效地定义.. 甚至沿着这些行ws2.range().value = ws1.range().value -
@Nathan_Sav 帮助使其成为更简洁的版本?这里是一个完整的新手