2016-05-13 7 views
0

Я бы хотел изменить этот субтитр вместо того, чтобы принимать ячейку по одному, одну от источника и до одного адресата, принимать диапазон ячеек, диапазон источников и диапазон назначения.Измените эти входы на входы как ячейку на диапазон ячеек

Моя цель состоит в том, чтобы вызвать этот Sub, чтобы скопировать только проверки данных из диапазона ввода ячеек и вставить их в другой диапазон ячеек, вызвав этот Sub. Этот Sub предназначен для того, чтобы быть вызванным другими Subs (и, возможно, функциями тоже), поэтому его необходимо повторно использовать. Может ли кто-нибудь пролить свет на этот вопрос для меня, пожалуйста?

код я хотел бы изменить это:

Sub CopyValidation(ByRef rngSourceCell As Range, ByRef rngTargetCell As Range) 
    With rngTargetCell.Validation 
     .Delete 
     .Add Type:=rngSourceCell.Validation.Type, _ 
      AlertStyle:=rngSourceCell.Validation.AlertStyle, _ 
      Operator:=rngSourceCell.Validation.Operator, Formula1:=rngSourceCell.Validation.Formula1, Formula2:=rngSourceCell.Validation.Formula2 
     .ErrorMessage = rngSourceCell.Validation.ErrorMessage 
     .ErrorTitle = rngSourceCell.Validation.ErrorTitle 
     .IgnoreBlank = rngSourceCell.Validation.IgnoreBlank 
     .IMEMode = rngSourceCell.Validation.IMEMode 
     .InCellDropdown = rngSourceCell.Validation.InCellDropdown 
     .InputMessage = rngSourceCell.Validation.InputMessage 
     .InputTitle = rngSourceCell.Validation.InputTitle 
     .ShowError = rngSourceCell.Validation.ShowError 
     .ShowInput = rngSourceCell.Validation.ShowInput 
    End With 
End Sub 

ответ

1

Вам не нужно настроить каждый параметр отдельно. Рассмотрю:

Sub dural() 
    Dim r1 As Range, r2 As Range 

    Set r1 = Range("A1:A10") 
    Set r2 = Range("B1:B10") 
    r1.Copy 
    r2.PasteSpecial xlPasteValidation 
End Sub 

Даже ваша единственная рутина клетки может использовать это:

Sub CopyValidation(ByRef rngSourceCell As Range, ByRef rngTargetCell As Range) 
    rngSourceCell.Copy 
    rngTargetCell.PasteSpecial xlPasteValidation 
End Sub 

В самом деле, вторая процедура может обрабатывать как отдельные ячейки и несколько ячеек в диапазоне (до тех пор, как диапазоны изоморфны)

+0

Я принимаю это изоморфно, вы имеете в виду, что они находятся в группе, прямоугольной между собой, как если бы вы перетаскивали мышью, чтобы выбрать ячейки? –

+1

@DavidS. Да ............. либо от одного прямоугольника до другого того же размера, либо от одной части строки до другой секции строки, либо от одной части столбца к другому разделу столбец или из одной ячейки в прямоугольник и т. д. ... как и любые другие экземпляры/пасты. –