2014-01-06 2 views
-1

У меня есть функция, которая выбирает диапазон на основе целого набора критериев из Sheet2. Я пытаюсь скопировать этот диапазон и показать/вставить на Sheet1 или показать его в окне сообщения.показать диапазон в окне сообщения VBA

Public Function findrulepos(target As Range, destination As Range) As String 


Dim ruleStart As Range 
Dim ruleEnd, ruleEnd2 As String 
Dim Xcell, PasteRangeIndexCell As Range 
Dim RuleRange As Range 

Dim LastCell As Range 
Dim FirstCell, IndexCell As Range 
Dim WholeRule As Range 


MaxRule = 100000 
MaxRow = 100000 


Sheets("ResRules").Select 
For i = 2 To MaxRow 

    If CStr(ThisWorkbook.Sheets("ResRules").Range("A" & i).Value) = CStr(target.Value) Then 
     Set ruleStart = ThisWorkbook.Sheets("ResRules").Range("B" & i) '.offset(0, 1) 
     Exit For 

    End If 

Next i 

    'MsgBox (ruleStart.address) 

Set FirstCell = ruleStart.offset(1, -1) 

Set IndexCell = FirstCell 

    Do Until IndexCell.Value <> "" Or IndexCell.Row >= MaxRow 
      Set IndexCell = IndexCell.offset(1, 0) 
     Loop 

     If IndexCell.Value <> "" Then 
     Set LastCell = IndexCell.offset(-1, 1) 
    MsgBox (LastCell.Value) 
    Else 
     Set LastCell = Nothing 
    End If 

    Set WholeRule = ThisWorkbook.Sheets("ResRules").Range("" & ruleStart.address & ":" & LastCell.address & "") 


    End Function 

Это весь код, чтобы дать мне диапазон я требую

Я добавил часы и может видеть я получаю правильный выбор, т.е. $ B $ 3: $ B $ 6, но не могу скопировать этот диапазон Спецификацию 1

+1

Можете ли вы изменить свой вопрос, чтобы включить код, который вы пытаетесь использовать для копирования диапазона? Вы должны использовать 'WholeRule.Copy Sheets (« Sheet1 »). Range (« A1 »)'. – ARich

+0

Когда вы говорите о функции, вы имеете в виду «пользовательскую функцию», то есть она вызывается из листа или обычной функции VBA? –

+0

@ARich в целом код добавлен – grahamie

ответ

0

Используйте следующие чтобы получить адрес:

Sheet1.Range("A1").value = WholeRule.address 

или, если вы хотите скопировать фактическое содержание в клетках:

WholeRule.copy Sheet1.Range("A1") 
+0

Ни один из них, похоже, не работает. Извините. – grahamie

1

Если функция вызывается из ячейки рабочего листа, а затем копирование/вставка не будет работать, так как этот тип функции может вернуть только значение в ячейку, в которой он находится. Вам нужна функция, вызванная от Sub.

+0

как это сделать? WholeRule дает мне диапазон, который нужно скопировать и вставить. – grahamie

+0

+ 1 Верно. UDF не может изменить другую ячейку. –

+0

@SiddharthRout Ok Спасибо. Итак, как я могу получить содержимое диапазона WholeRule для показа (копирование/вставка) на главной странице? есть идеи. – grahamie

0

спасибо, ребята

работали его

изменил его к югу затем


Public Sub ReturnRuleButton() вызова findrulepos (ThisWorkbook.Sheets ("Основные"). Cells (2, 5), ThisWorkbook.Sheets («Main»). Ячейки (2, 6)) Конец Sub


Смежные вопросы