2014-04-09 16 views
7

VBA kullanarak bir hücreye "veri doğrulaması" eklemek istiyorum (değişken olan) ve veri doğrulama listesinde bulunan aralık da değişkendir. Şu ana kadar ben veri doğrulama alıyorumVBA kullanarak bir hücreye veri doğrulama nasıl eklenir

Dim range1, rng As range 
Set range1 = range("a1:a5") 
Set rng = range("b1") 
With rng 
With .Validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="range1" 
End With 
End With 

istediğiniz hücreyi "RNG" veri doğrulama listesindeki gelip etmektir aralığını bu İşte

"range1" edilir kullanıyoruz "uygulama tanımlanmış ve nesne tanımlı hata" Ayrıca

birisi

With .Validation 
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="range1" 

cevap

16

Kullanımında bana bu bir farklı argümanlar anlamını açıklayabilir:

01 Eğer Dim range1, rng As range kullanırken, sadece rng Range tipini vardır, ama range1 Variant olduğunu
Dim ws As Worksheet 
Dim range1 As Range, rng As Range 
'change Sheet1 to suit 
Set ws = ThisWorkbook.Worksheets("Sheet1") 

Set range1 = ws.Range("A1:A5") 
Set rng = ws.Range("B1") 

With rng.Validation 
    .Delete 'delete previous validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 
     Formula1:="='" & ws.Name & "'!" & range1.Address 
End With 

Not. Bu yüzden Dim range1 As Range, rng As Range kullanıyorum. okuyabilir parametrelerin anlamı Hakkında
MSDN olmakla kısacası:

  • Type:=xlValidateList bu durumda size
  • AlertStyle:=xlValidAlertStop doğrulama sırasında görüntülenen ileti kutularında kullanılan simgeyi belirten listeden değer seçmelidir, doğrulama türü anlamına gelir . Kullanıcı listeden herhangi bir değer girerse, hata mesajı alır.
  • , orjinal kodunda, Operator:= xlBetween bozuk. Sadece doğrulama için iki formül sağlanmışsa kullanılabilir. Liste veri doğrulama için
  • Formula1:="='" & ws.Name & "'!" & range1.Address (formatta =Sheet!A1:A5 olarak) değerlerine
+0

Hey benim yaptığım değişiklikler ve onun iyi çalışıyor, Hey sen
açıklayabilir misiniz
yardım için teşekkürler 'ile listesinin adresini sağlar '
tekrar küçük bir ayrıntıda, sadece anlamadım ve ne "=" "ve" =! " , Ben VBA için yeni, lütfen aldırmayın veya ayrıntılı olarak inceleyebileceğim herhangi bir bağlantınız varsa harika olacak. – Gajju

+3

@Gajju, endişelenme, çok kolay :) başlayalım! İstenen sonuç şöyle bir şeydir: 'Formula1: = '=' Sayfa1 '! A1: A5'' - Exceldeki tüm formüller eşittir: '='. Ardından, '' Sheet1 '! ',' A1: A5 'aralığının' Sheet1 'sayfasına girdiği anlamına gelir (eğer sayfa isminiz _doesn't_ boşluk içeriyorsa, o zaman iç çekebilirsiniz)' 'bu gibi: Formula1: =" = Sheet1! A1: A5 ". Ancak, bu formülü kodlamak istemiyoruz, bu yüzden kullanıyoruz:' Formula1: = "= '" & ws.Name & "'!" & Range1.Address '' ws.Name', sayfayı döndürür isim (örn. "Sheet1") ve 'range1.Address ', A1: A5' i döndürür. –

+0

Hey, anlaşılması kolay oldu, zaman için teşekkürler ve yardım için tekrar teşekkürler ... – Gajju

İlgili konular