2015-02-10 19 views
5

mogę ustawić konkretną komórkę w wielu arkuszy do tej samej wartości bez użycia pętli z czymś takim:Unikanie pętli w Ustawianie komórek w różnych arkuszach

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

uruchomieniu makra powyżej miejscach taką samą wartość we wszystkich B9s w arkuszach zawarte w Array()

staram się zrobić to samo poprzez tworzenie i używanie Object odpowiednik powyższego kodu:

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

To działa bez błędu, ale tylko jeden arkusz dostaje = „x” w żądanej komórce.

Co robię źle?

EDIT # 1

Vasily Post dał mi wskazówkę ................ ta wersja wydaje się działać:

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 

Chociaż wydaje się to naruszać pogląd, że można uniknąć wyboru Wybierz.

Odpowiedz

4

Rozumiem, że nie jest to dokładnie to, czego chcesz, ale jako jedna z możliwości ograniczenia kodowania.

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 

EDIT # 1

może wyglądać następująco

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

Interesujące przedstawienie 'obj', +1 za uczenie mnie czegoś nowego –

+1

Dziękuję .... podczas gdy nie jest to dokładnie to, czego chcę, przynajmniej pokazałeś mi jeden sposób na użycie tego typu obiektu ..... . ** (+ 1) ** –

+1

Jeszcze raz dziękuję ........... zobacz moje ** EDYCJA # 1 ** –

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

Sub ThisWorks()

Sheets("Sheet1").select 
    Range("B9").Select 
    ActiveCell.FormulaR1C1 = "=""x""" 
    Sheets("Sheet3").select 
    Range("B9").Select 
    ActiveCell.FormulaR1C1 = "=""x""" 
End Sub 
+0

Jeśli mógłbyś edytować odpowiedź i wyjaśnić, co robi kod, i dlaczego/jak ten kod odpowiada na pytanie, to naprawdę może pomóc. –