2015-07-08 12 views
5

Hücre seçmek için yalnızca bir kod seçmem gerekiyor, ancak bu hücrede değişiklik seçilmelidir. Çalışma kitabında hangi hücrenin olması gerektiğini belirten bir hücrem var. Hücre A1, seçilmesi gereken hücre # içerir.Tek bir hücre veya aralık seçmek için dolaylı başvuru nasıl kullanılır? Vba

Bu örnekte A1 hücresi "P25" sözcüğünü içerir, bu yüzden aşağıdaki kodun P25'e dolaylı hücre ref için A1'i referans almasını istiyorum, böylece P25 hücresini seçin.

ayrı ayrı bu satırların hem çalıştı:
Sub IndirectCellSelect() 

    Sheet.Range(INDIRECT(A1)).Select 
    Range(INDIRECT(A1)).Select 

End Sub 

Ben DOLAYLI kelimeye aldığında, tanımlanmamış hata sub veya fonksiyon olsun

Bu farklı bir yol yapabilirsiniz

cevap

2

yayınlanan koda hafif değişiklik çalışır: Bunun yerine, böyle bir şey denemek

Range([indirect("a1")]).Select 

ama bunun yerine bunlardan birini denemek için tavsiye ediyorum:

Sheet.Range(Sheet.Range("A1").Value).Select 
Range(Range("A1")).Select 

ilk daha açık olmak ve üretim kodunda tavsiye edilir.

+0

Teşekkürler! İlk ve üçüncü olanlar çalıştı! Onlara tavsiye ettiğinden beri üçüncü biriyle gideceğim. – Bryan

+0

İkinci formülün kullandığınız sayfaya uyarlanması gerekiyor, bu yeni bir çalışma kitabının ilk sayfası için 'Sheet1' olacaktır. Bu genellikle pratikte tavsiye edilir, çünkü kod her zaman aynı şekilde çalışır ve hangi sayfanın aktif olduğuna bağlı olmayacaktır. –

0

ama Eğer VBA kodu içinde yerli Excel çalışma sayfası işlevi kullanmak istiyorsanız, (Ben de A1 başvuru nasıl ayarlanır ki notta) şöyle yapmanız gerekir:

Application.WorksheetFunction.Indirect(Sheets(1).Range("A1")) 

Edit Özür dilerim - Bunu test etmemiştim. Dolaylı işlev bu bağlamda mevcut değil gibi görünüyor.

Dim rng as Range 
Set rng = sheets(1).Range("A1") 

sheets(1).Range(rng.text).Select 
+0

Maalesef bir işlevi nasıl düzgün kullanacağımı bilmiyorum. Boşuna birkaç yolu denedim ve sadece bir işlevi ne zaman kullanacakları arasındaki farklılıkları okuyordum, ama yine de bunu uygulayamadım. Hata alıyorum "Nesne bu özelliği veya yöntemi desteklemiyor" Ayrıca Sayfa adı (1), sayfa adı farklıysa veya sadece 1 = aktif ise önemli mi? – Bryan

+1

Düzenlemelere bakın - bu çoğu işlev için işe yarar, ancak 'Dolaylı' bu şekilde desteklenmiyor gibi görünüyor. Zaten daha kafa karıştırıcı IMO olduğu gibi mantıklı. –

+0

Ahh harika, evet geçmişte bu konuya girdiğim kadar güvenli görünüyor, birisini işe yaratalım! Bu yazı hakkında bilgi sahibi olma ihtimaliniz var mı? Kimse cevap vermedi ve 1 aydır kalktı ... http://stackoverflow.com/questions/30764616/downloaded-new-versions-of-files-need-to-be-opened-and-saved-to- work-automatic-r – Bryan

0
Worksheets("list").Sort.SortFields.Add Key:=Range(INDIRECT("I16" & "3" & ":" & "I16" & "5002")) _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With Worksheets("list").Sort 
     .SetRange Range("B2:K5002") 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
+1

Yığın Taşmasına Hoş Geldiniz! Kod örneğiyle birlikte daha ayrıntılı bir açıklama ekleyerek cevabınızı netleştirebilirsiniz. – jkdev

İlgili konular