所以我在我的代碼中遇到FindNext問題,它的vba看不到我在循環外部創建的對象。VBA看不到我在循環外創建的對象
Sub Macro1()
'Dwa skoroszyty
Dim ws1, ws2 As Worksheet
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Wynik")
Dim NaglowekWiersz, NaglowekKolumna As Integer
NaglowekKolumna = 1
NaglowekWiersz = 1
Worksheets("Sheet1").Activate
Set LpDoZnalezienia = ws1.Range("A:A").Find("lp.", LookAt:=xlPart)
Set RazemDoZnalezienia = ws1.Range("A:A").Find("Razem", LookAt:=xlWhole)
'Petla do szukania pracowników
For a = 1 To 3
If (a > 1) Then
Set LpDoZnalezienia = ws1.Range("A:A").FindNext(LpDoZnalezienia).Offset(1, 0)
Set RazemDoZnalezienia = ws1.Range("A:A").FindNext(RazemDoZnalezienia)
End If
'Znalezienie danego pracownika
Set Pracownik = ws1.Range(LpDoZnalezienia, RazemDoZnalezienia).Resize(, 12)
Worksheets("Wynik").Activate
For b = 1 To 35
'Dana Wartość z arkusza wynik aka nagłówek
Dim szukanaWartosc As String
szukanaWartosc = ws2.Cells(1, NaglowekKolumna).Value
'Znaleziona wartosc w arkuszu Sheet1
Worksheets("Sheet1").Activate
Set WartoscDoZnalezienia = Pracownik.Find(szukanaWartosc, LookAt:=xlWhole)
If WartoscDoZnalezienia Is Nothing Then
GoTo Line
Else
Set Znalezione = WartoscDoZnalezienia.Offset(0, 2)
End If
Worksheets("Wynik").Activate
ws2.Cells(NaglowekWiersz + 1, NaglowekKolumna) = Znalezione.Value
Line:
'Przesuniecie naglowka o 1 w arkuszu wynik aby szukalo kolejnej wartości
NaglowekKolumna = NaglowekKolumna + 1
Next b
NaglowekKolumna = a
NaglowekWiersz = NaglowekWiersz + 1
Next a
End Sub
當我嘗試使用FindNext中與早些時候宣佈發現它給我運行時錯誤91對象或變量沒有在這一行設置:
錯誤時的代碼去FindNext中
它可以完美地工作,當我將這兩行復制到循環外部時,有人能告訴我什麼即時通訊代碼在我的代碼中做錯了嗎?
錯誤發生時,'a'是什麼?從你的描述中,我猜測它發生在'a = 3'時。在使用之前,你應該檢查'LpDoZnalezienia'是否是'Nothing'。另外,使用'Option Explicit'並聲明所有變量將使你的代碼更健壯。 –
通過imit每個僱主,問題是不是在循環中,因爲當我seting循環做一旦它的工作正常,我有問題,當它來到第二次迭代,因爲它像vba看不到我停用找到外面的循環,所以當它來到FindNext時它會崩潰。 – kstroz
它幾乎不重要你在循環外面聲明的內容,因爲在循環中你用一個新值覆蓋'LpDoZnalezienia'。當FindNext返回Nothing時,錯誤91由'.Offset(1,0)'引起。 – GSerg