Son bulma konusunda hata VBA hücre
Son hücre değeri bulmak istiyorum, ben kullanın:
Dim last_row As Integer
Dim LastRow As Long
LastRow = Range("E4:E48").End(xlDown).Row
Debug.Print LastRow
Bir hücreye tek bir element koymak yanlış çıktı alıyorum. Ancak hücre içine birden fazla değer verdim mi, çıktı doğru mu? Bunun arkasındaki neden nedir?
CEVAP
NOTBu "bir yazı son satırı bulmak için Correct
yol kullanabilirsiniz". dur yapma niyetindeyim Bu da son satır bulma yapmak için, en iyi uygulamaları karşılar. Ve bu yüzden yeni senaryo/bir bilgi karşısında ne zaman bu güncelleme devam edeceğim.
Son satır bulma güvenilmez yollar
Son derece güvenilmez ve bu nedenle asla kullanılmamalıdır olan son satır bulma en yaygın yollarından bazıları.
- UsedRange
- xlDown
- CountA
UsedRange
ASLAveri olan son hücreyi bulmak için kullanılacak. Son derece güvenilmez. Bu deney deneyin.
Hücrede türü bir şey A5
. Şimdi bu yöntem aşağıda verilen herhangi bir son satır hesaplamak, 5 verecektir. Şimdi renk hücresi A10
kırmızı. Eğer şimdi kod aşağıda herhangi bir kullanımı varsa, hala 5 alacak. Eğer Usedrange.Rows.Count
kullanırsanız ne olur? 5 olmayacak.
Burada UsedRange
nasıl çalıştığını göstermek için bir senaryo.
xlDown
eşit derecede güvenilir değil.
Bu kodu göz önünde bulundurun
lastrow = Range("A1").End(xlDown).Row
Eğer veri olan bir tek hücre (A1
) olsaydı orada neler olurdu? Çalışma sayfasındaki son satırı ulaşmadan sona erecek! Hücre A1
seçip basmak gibi bir şeySonundatuşuna basarak ve daha sonraAşağı Okanahtar. Bu da eğer bir aralıktaki boş hücreler varsa, orada size güvenilir olmayan sonuçlar verir.
CountA
eğer aralarında boş hücreler varsa, orada yanlış sonuç verecektir, çünkü o da güvenilmez.
Ve bu nedenle bir UsedRange
, xlDown
CountA
kullanımı son hücreyi bulmak için kaçınmalısınız.
Bir sütundaki en Son Satır bulacaksınız
Col E son Satırı bulmak için bunu kullanın
With Sheets("Sheet1")
LastRow = .Range("E" & .Rows.Count).End(xlUp).Row
End With
Rows.Count
önce .
olduğunu fark ederseniz. Biz genellikle bunu görmezden gelmeyi tercih ediyor. THIS alabilirsiniz, olası bir hata söz konusu. Ben her zaman Rows.Count
Columns.Count
önce .
kullanarak öneriyoruz. Bu soruyu kodu Rows.Count
Excel 2003 ve öncesi için 65536
Excel 1048576
2007 ve daha sonra döner, çünkü başarısız olur klasik bir senaryodur. Benzer şekilde Columns.Count
döner 256
16384
, sırasıyla.
Yukarıdaki aslında bir Excel 2007 1048576
satır da vurguluyor üzerinde olması gerektiğini hep beyan değişken olan tutar satır değeri olarak Long
yerine Integer
başka sen-ecek almak bir Overflow
hata.
Bir sayfasında Son Satırı bulmak
Sayfası Effective
son satırı bulmak için bunu kullanın. Application.WorksheetFunction.CountA(.Cells)
kullanımına dikkat edin. Bu veriler çalışma ile hücreler varsa, orada hiçbir zaman .Find
Run Time Error 91: Object Variable or With block variable not set
vermek için gereklidir
With Sheets("Sheet1")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lastrow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lastrow = 1
End If
End With
8 tablo Internet Explorer hücre genişl...
HATA: gem yerel uzantı (raylar üzerind...
Chrome hata ayıklama - ileri ' yi olay...
Neden bulma türü'In başlatıcı bir...
Visual Studio tek bir iş parçacığı, ha...