Vba excel宏“;“所需对象”;错误
我第一次使用VBA工作,我遇到了一个似乎无法纠正的错误 我想将一些字段从一张图纸传递到另一张图纸。 它给了我“所需对象”,但我似乎无法理解,所以卖了这个 我的代码是:Vba excel宏“;“所需对象”;错误,vba,excel,Vba,Excel,我第一次使用VBA工作,我遇到了一个似乎无法纠正的错误 我想将一些字段从一张图纸传递到另一张图纸。 它给了我“所需对象”,但我似乎无法理解,所以卖了这个 我的代码是: Sub principal_main() Dim Max_rows, j, row_number As Integer Dim i, count As Integer Dim name_Row As String Dim morada, localidade, email, cod_postal,
Sub principal_main()
Dim Max_rows, j, row_number As Integer
Dim i, count As Integer
Dim name_Row As String
Dim morada, localidade, email, cod_postal, data As String
Dim telefone, nif As Integer
Dim escreve As Range
count = 0
row_number = 12
name_Row = ""
Max_rows = 23200
For i = 13 To Max_rows
If name_Row = "" Then
name_Row = myWorksheet.Range("B" & i).Value
morada = ""
localidade = ""
email = ""
cod_postal = ""
data = ""
telefone = 0
nif = 0
count = 0
Else
count = count + 1
If count = 26 Then
name_Row = ""
End If
Select Case count
Case 2
morada = myWorksheet.Range("B" & i).Value
telefone = myWorksheet.Range("I" & i).Value
Case 4
localidade = myWorksheet.Range("B" & i).Value
email = myWorksheet.Range("I" & i).Value
Case 5
cod_postal = myWorksheet.Range("B" & i).Value
nif = myWorksheet.Range("I" & i).Value
Case 7
data = myWorksheet.Range("C" & i).Value
nome_row = Replace(nome_row, " - ", "")
For j = 0 To 10
nome_row = Replace(nome_row, j, "")
Next
Set Sheets("final").Range("B" & count_copiados) = name_Row
Set Sheets("final").Range("C" & count_copiados) = morada
Set Sheets("final").Range("D" & count_copiados) = cod_postal
Set Sheets("final").Range("E" & count_copiados) = localidade
Set Sheets("final").Range("F" & count_copiados) = telefone
Set Sheets("final").Range("G" & count_copiados) = email
Set Sheets("final").Range("H" & count_copiados) = nif
Set Sheets("final").Range("I" & count_copiados) = data_ficha
'Sheets("final").Row(count_copiados).collumn("B") = name_Row
'Sheets("final").Row(count_copiados).collumn("C") = morada
'Sheets("final").Row(count_copiados).collumn("D") = cod_postal
'Sheets("final").Row(count_copiados).collumn("E") = localidade
'Sheets("final").Row(count_copiados).collumn("F") = telefone
'Sheets("final").Row(count_copiados).collumn("G") = email
'Sheets("final").Row(count_copiados).collumn("H") = nif
'Sheets("final").Row(count_copiados).collumn("I") = data_ficha
End Select
End If
Next
End Sub
新代码,但有一些更改:
Option Explicit
Sub principal_main()
Dim Max_rows, row_number As Long
Dim i, j, count, count_copiados As Long
Dim name_Row As String
Dim morada, localidade, email, cod_postal, data_ficha As String
Dim telefone As Variant
Dim nif As Integer
Dim escreve As Range
Dim myWorksheet As Worksheet
myWorksheet = Sheets(1)
count = 0
row_number = 12
name_Row = ""
Max_rows = 23200
count_copiados = 13
For i = 13 To Max_rows
If name_Row = "" Then
name_Row = myWorksheet.Range("B" & i).Value
morada = ""
localidade = ""
email = ""
cod_postal = ""
data_ficha = ""
telefone = 0
nif = 0
count = 0
Else
count = count + 1
If count = 26 Then
name_Row = ""
End If
Select Case count
Case 2
morada = myWorksheet.Range("B" & i).Value
telefone = myWorksheet.Range("I" & i).Value
Case 4
localidade = myWorksheet.Range("B" & i).Value
email = myWorksheet.Range("I" & i).Value
Case 5
cod_postal = myWorksheet.Range("B" & i).Value
nif = myWorksheet.Range("I" & i).Value
Case 7
data_ficha = myWorksheet.Range("C" & i).Value
name_Row = Replace(name_Row, " - ", "")
For j = 0 To 10
name_Row = Replace(name_Row, j, "")
Next
Set Sheets("final").Range("B" & count_copiados) = name_Row
Set Sheets("final").Range("C" & count_copiados) = morada
Set Sheets("final").Range("D" & count_copiados) = cod_postal
Set Sheets("final").Range("E" & count_copiados) = localidade
Set Sheets("final").Range("F" & count_copiados) = telefone
Set Sheets("final").Range("G" & count_copiados) = email
Set Sheets("final").Range("H" & count_copiados) = nif
Set Sheets("final").Range("I" & count_copiados) = data_ficha
'Sheets("final").Row(count_copiados).collumn("B") = name_Row
'Sheets("final").Row(count_copiados).collumn("C") = morada
'Sheets("final").Row(count_copiados).collumn("D") = cod_postal
'Sheets("final").Row(count_copiados).collumn("E") = localidade
'Sheets("final").Row(count_copiados).collumn("F") = telefone
'Sheets("final").Row(count_copiados).collumn("G") = email
'Sheets("final").Row(count_copiados).collumn("H") = nif
'Sheets("final").Row(count_copiados).collumn("I") = data_ficha
count_copiados = count_copiados + 1
End Select
End If
Next
End Sub
试一试
试一试
您在哪里标注和分配
myWorksheet
变量?在模块顶部放置选项Explicit
,然后尝试清除错误。考虑<代码> DimeMyWorkLabb作为工作表<代码>,<代码> SET= MyWorkLabe=表(1)< /Cord>谢谢,现在运行,它会产生新的错误(溢出),但这肯定是因为编码不好。谢谢,这可能是因为您使用的是Integer
并溢出了它。将Integer
更改为Long
。另外,请注意,Dim telefone,nif作为整数
dimensionstelefone
asVariant
和nif
asInteger
,而不是两者都作为整数
完成,但仍然会给我带来溢出。我所有的计数器都很长,而且telefone
是可变的。当它给你一个错误时,点击debug,它会把你发送到引起错误的那一行。它是哪一行?在哪里标注和分配myWorksheet
变量?在模块顶部放置选项Explicit
,然后尝试清除错误。考虑<代码> DimeMyWorkLabb作为工作表<代码>,<代码> SET= MyWorkLabe=表(1)< /Cord>谢谢,现在运行,它会产生新的错误(溢出),但这肯定是因为编码不好。谢谢,这可能是因为您使用的是Integer
并溢出了它。将Integer
更改为Long
。另外,请注意,Dim telefone,nif作为整数
dimensionstelefone
asVariant
和nif
asInteger
,而不是两者都作为整数
完成,但仍然会给我带来溢出。我所有的计数器都很长,而且telefone
是可变的。当它给你一个错误时,点击debug,它会把你发送到引起错误的那一行。是哪一行?谢谢,发现你的手机有问题help@RicardoAlves很高兴我能帮上忙!谢谢,发现了您的问题help@RicardoAlves很高兴我能帮上忙!
Option Explicit
Sub principal_main()
Dim Max_rows&, row_number&
Dim i&, j&, count&, count_copiados&
Dim name_Row$
Dim morada$, localidade$, email$, cod_postal$, data_ficha$
Dim telefone As Variant
Dim nif&
Dim escreve As Range
Dim myWorksheet As Worksheet
Set myWorksheet = Sheets(1)
count = 0
row_number = 12
name_Row = ""
Max_rows = 23200
count_copiados = 13
For i = 13 To Max_rows
If name_Row = "" Then
name_Row = myWorksheet.Range("B" & i).Value
morada = ""
localidade = ""
email = ""
cod_postal = ""
data_ficha = ""
telefone = 0
nif = 0
count = 0
Else
count = count + 1
If count = 26 Then
name_Row = ""
End If
Select Case count
Case 2
morada = myWorksheet.Range("B" & i).Value
telefone = myWorksheet.Range("I" & i).Value
Case 4
localidade = myWorksheet.Range("B" & i).Value
email = myWorksheet.Range("I" & i).Value
Case 5
cod_postal = myWorksheet.Range("B" & i).Value
nif = myWorksheet.Range("I" & i).Value
Case 7
data_ficha = myWorksheet.Range("C" & i).Value
name_Row = Replace(name_Row, " - ", "")
For j = 0 To 10
name_Row = Replace(name_Row, j, "")
Next
Sheets("final").Range("B" & count_copiados) = name_Row
Sheets("final").Range("C" & count_copiados) = morada
Sheets("final").Range("D" & count_copiados) = cod_postal
Sheets("final").Range("E" & count_copiados) = localidade
Sheets("final").Range("F" & count_copiados) = telefone
Sheets("final").Range("G" & count_copiados) = email
Sheets("final").Range("H" & count_copiados) = nif
Sheets("final").Range("I" & count_copiados) = data_ficha
'Sheets("final").Row(count_copiados).collumn("B") = name_Row
'Sheets("final").Row(count_copiados).collumn("C") = morada
'Sheets("final").Row(count_copiados).collumn("D") = cod_postal
'Sheets("final").Row(count_copiados).collumn("E") = localidade
'Sheets("final").Row(count_copiados).collumn("F") = telefone
'Sheets("final").Row(count_copiados).collumn("G") = email
'Sheets("final").Row(count_copiados).collumn("H") = nif
'Sheets("final").Row(count_copiados).collumn("I") = data_ficha
count_copiados = count_copiados + 1
End Select
End If
Next
End Sub