2015-02-10 21 views
5

Çeşitli çalışma sayfaları içinde Hücreler Ayar içinde Loops kaçınmak:gibi bir şey ile bir döngü kullanmadan aynı değere birden çok çalışma belirli bir hücreyi ayarlayabilirsiniz

Sub ThisWorks() 
    Sheets(Array("Sheet1", "Sheet3")).Select 
    Sheets("Sheet1").Activate 
    Range("B9").Select 
    ActiveCell.FormulaR1C1 = "=""x""" 
End Sub 

yerlerde yukarıda Makroya aynı değeri Koşu tüm B9s Çalışma sayfalarında Ben oluşturma ve yukarıdaki koda eşdeğer Nesne kullanarak aynı şeyi yapmaya çalışıyorum

Array() dahil:

Sub ThisPartiallyWorks() 
    Dim obj As Object 
    Set obj = Sheets(Array("Sheet1", "Sheet3")) 
    obj.Select 
    Range("A2").Formula = "=""x""" 
End Sub 

Bu hatasız çalışır, ancak yalnızca bir çalışma sayfası istenilen hücreye = "x" alır.

Neyi yanlış yapıyorum?

Sub Finally() 
    Dim obj As Object 
    Set obj = Sheets(Array("Sheet1", "Sheet3")) 
    obj.Select 
    obj(1).Activate 
    Range("B9").Select 
    ActiveCell.FormulaR1C1 = "=""x""" 
End Sub 

rağmen:

Vasily en Mesaj bana ipucu verdi DÜZENLEME # ................ bu sürümü çalışması için görünür Bu, Seç'un önlenebileceği fikrini ihlal ediyor gibi görünüyor.

cevap

4

Bunun tam olarak ne istediğinizi değil, kodlamayı azaltmanın seçeneklerinden biri olarak anlıyorum.

Sub test() 
    Dim obj As Object, i& 
    Set obj = Sheets(Array("Sheet1", "Sheet3")) 
    For i = 1 To obj.Count: obj(i).[B9].Formula = "=""x""": Next 
End Sub 

DÜZENLEME # 1

bu

Sub Finally() 
    Dim obj As Object 
    Set obj = Sheets(Array("Sheet1", "Sheet3")) 
    obj.Select: obj(1).[B9].Activate: ActiveCell.Formula = "=""x""" 
End Sub 
+1

İlginç bir “obj” performansı, bana yeni bir şey öğrettiğim için +1 –

+1

Teşekkür ederim .... bu tam olarak istediğimde değil, en azından bana bu tarz nesneleri kullanmanın bir yolunu gösterdin ..... . ** (+ 1) ** –

+1

Teşekkürler ........... benim ** EDIT # 1'i görün ** –

0
Instead of using complex arrays, when you specifically know only two sheets need to be edited. Then we can do in simple. 

Alt ThisWorks()

Sheets("Sheet1").select 
    Range("B9").Select 
    ActiveCell.FormulaR1C1 = "=""x""" 
    Sheets("Sheet3").select 
    Range("B9").Select 
    ActiveCell.FormulaR1C1 = "=""x""" 
End Sub 
gibi görünebilir
+0

Cevabınızı düzenleyebilir ve gösterdiğiniz kodun ne olduğunu ve bu kodun soruyu neden/nasıl cevaplandığını açıklayabilirseniz gerçekten yardımcı olabilir. –

İlgili konular