2014-04-09 52 views
7

Tôi muốn thêm "xác thực dữ liệu" trong ô (biến) bằng VBA và phạm vi nằm trong danh sách xác thực dữ liệu cũng biến. Đến bây giờ tôi đã được sử dụngCách thêm xác thực dữ liệu vào một ô bằng cách sử dụng VBA

Here "RANGE1" này là phạm vi đang tiến đến gần trong danh sách xác nhận dữ liệu và "RNG" được các tế bào nơi tôi muốn xác nhận dữ liệu

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 

Tôi nhận được "ứng dụng xác định và đối tượng được xác định lỗi"

Ngoài ra ai đó có thể giải thích cho tôi ý nghĩa của lập luận khác nhau trong

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

Trả lời

16

Sử dụng cái này:

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 

Lưu ý rằng khi bạn đang sử dụng Dim range1, rng As range, chỉ rng có loại Range, nhưng range1Variant. Đó là lý do tại sao tôi đang sử dụng Dim range1 As Range, rng As Range.
Về ý nghĩa của các thông số bạn có thể đọc là MSDN, nhưng trong ngắn hạn:

  • Type:=xlValidateList nghĩa loại xác nhận, trong trường hợp đó bạn nên chọn giá trị từ danh sách
  • AlertStyle:=xlValidAlertStop quy định các biểu tượng được sử dụng trong hộp thư hiển thị trong xác nhận . Nếu người dùng nhập bất kỳ giá trị nào ra khỏi danh sách, họ sẽ nhận được thông báo lỗi.
  • trong mã ban đầu của bạn, Operator:= xlBetween là số lẻ. Nó chỉ có thể được sử dụng nếu hai công thức được cung cấp để xác thực.
  • Formula1:="='" & ws.Name & "'!" & range1.Address để xác nhận dữ liệu danh sách cung cấp địa chỉ của danh sách với giá trị (ở định dạng =Sheet!A1:A5)
+0

Hey Tôi đã làm những thay đổi và làm việc của nó tốt, nhờ sự giúp đỡ
Hey bạn có thể xin giải thích
' '
một lần nữa trong một chi tiết nhỏ, tôi chỉ không undersatnd những gì là "=" "và" =! " , Tôi mới làm quen với VBA, xin đừng bận tâm hoặc nếu bạn có bất kỳ liên kết nào mà tôi có thể nghiên cứu chi tiết thì sẽ thật tuyệt vời. – Gajju

+3

@Gajju, đừng lo lắng, thật dễ dàng :) hãy bắt đầu! kết quả mong muốn là một cái gì đó như thế này: 'Formula1: =" = 'Sheet1'! A1: A5 "' - Tất cả các công thức trong excel bắt đầu từ dấu bằng: '='. Tiếp theo, ''Sheet1'!' Có nghĩa là phạm vi 'A1: A5' thuộc về trang' Sheet1' (nếu tên trang tính của bạn _doesn't_ chứa dấu cách, bạn có thể ommit sigh ''' như sau: Formula1: = "= Sheet1! A1: A5 ". Nhưng chúng tôi không muốn mã hóa công thức này, vì vậy chúng tôi sử dụng:' Formula1: = "= '" & ws.Name & "'!" & Range1.Address' trong đó 'ws.Name' trả về trang tính tên (ví dụ "Sheet1") và 'range1.Address' trả về' A1: A5'. –

+0

Hey nó rất dễ hiểu, cảm ơn thời gian và cảm ơn một lần nữa để được giúp đỡ ... – Gajju

Các vấn đề liên quan