Excel VBA makroları Seçin kullanmaktan kaçınmak
Excel .Select
kullanarak anlaşılabilir duyma konusunda çok VBA makroları duydum, ama bunu kullanarak önlemek için nasıl emin değilim. Benim kod Select
işlevleri yerine değişkenleri kullanma şansım olsaydı daha fazla yeniden kullanılabilir olacağını buluyorum. Ancak, işler (ActiveCell
vb. gibi) ifade etmek için nasıl emin değilim değilse Select
kullanarak.
this article on ranges this example on the benefits of not using select bulduk ama bir şey bulamıyorumnasıl?
CEVAP
Seç önlemek için bazı örnekler
Kullanım Dim
'd değişkenleri
Dim rng as Range
Set
istenen dizi değişkeni. Tek hücreli bir alanı ifade etmek için birçok yol vardır
Set rng = Range("A1")
Set rng = Cells(1,1)
Set rng = [A1]
Set rng = Range("NamedRange")
ya da çok hücreli bir dizi
Set rng = Range("A1:B10")
Set rng = Range(Cells(1,1), Cells(2,10))
Set rng = [A1:B10]
Set rng = Range("AnotherNamedRange")
Tüm yukarıdaki örnekler üzerinde hücreleri bakınetkin sayfa. Özellikle yalnızca etkin sayfayı çalışmak istemiyorsan, daha iyi Worksheet
bir değişken de Dim
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Set rng = ws.Cells(1,1)
Yine, bu ifade ederetkin çalışma kitabıyani siz burada çok açık..
Dim wb As Workbook
Set wb = Application.Workbooks("Book1")
Set rng = wb.Worksheets("Sheet1").Range("A1")
Senin için aralıklar Sub
Function
'In Dizi değişkenleri olarak
Sub ClearRange(r as Range)
r.ClearContents
'....
End Sub
Sub MyMacro()
Dim rng as Range
Set rng = [A1:B10]
ClearRange rng
End Sub
Ayrıca değişkenler için Yöntemler (Find
Copy
gibi) uygulamak gerekir
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = [A1:A10]
Set rng2 = [B1:B10]
rng1.Copy rng2
Eğer bir hücre aralığı üzerinde döngü genellikle daha iyidir (daha hızlı) değişken bir dizi için Aralık değerleri ilk kopya ve üzerinde döngü için
Dim dat As Variant
Dim rng As Range
Dim i As Long
Set rng = [A1:A10000]
dat = rng.Value ' dat is now array (1 to 10000, 1 to 1)
for i = LBound(dat, 1) to UBound(dat, 1)
dat(i,1) = dat(i,1) * 10 'or whatever operation you need to perform
next
rng.Value = dat ' put new values back on sheet
Bu olası şey için küçük bir başlangıçtı.
Java Etiketi İfadeleri kullanmaktan ka...
Sunucu @değişken SEÇİN SQL?...
Excel'deki bir hücreye bir sütundaki s...
MySQL bir tablodan tüm sütunları ve ba...
Yalnızca formülleri kullanarak bir Exc...