2015-05-20 4 views
-1

Мне помогли с кодом ниже, который отличен, однако он передает/выбирает адрес ячейки в соответствии с предыдущим листом, пожалуйста, вы можете предоставить код для динамического диапазона, чтобы он/выбирает клетки, основанные на текущем выборе в новом листе, а не адрес ячейкиВыберите новый диапазон в зависимости от выбора других листов

Sub MatchRange()  
    Dim ady As String  
    ady = Selection.Address  
    Sheets("Sheet2").Select  
    Range(ady).Select 
End Sub 

Ссылка на котором предыдущий код был получен: Match/resize new range based on another sheets selection

Извините за расплывчатым, так что позволяет сказать, что в листовом а у меня есть диапазон a1: b50, я хочу соответствовать размеру выбора в листе b. Поэтому в этой ситуации это будет c51: d100.

+0

Можете ли вы привести пример того, что вы хотите, чтобы это произошло? – chancea

+0

Вы хотите, чтобы выбрать диапазон в листе A и получить содержимое ячейки листа B с тех же адресов в лист A? – MikeD

+0

Какова корреляция между 'a1: b50' и' c51: d100' – chancea

ответ

1

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

Sub MatchSelectionArea() 
    Dim rng As Range 
    Dim nRows As Long 
    Dim nCols As Long 

    Set rng = Selection 

    nRows = rng.Rows.Count 
    nCols = rng.Columns.Count 

    Sheets("Sheet2").Activate 

    ActiveCell.Resize(nRows, nCols).Select 
End Sub 
+0

Чтобы просто уточнить, это выбор размера, основанного на текущей выбранной ячейке R1C1 во втором листе. Не объяснено вообще в вопросе – chancea

0

Когда ваш код читает Selection.Address, вы должны прикрепить его к листу, который вы хотите использовать для источника. Итак:

Sub MatchRange()  
    Dim ady As String  
    ady = Sheets("sheet_name").Selection.Address  
    Sheets("Sheet2").Select  
    Range(ady).Select 
End Sub 
+0

. Должен ли я спрашивать, зачем вам это нужно? Множество действий (копирование и вставка и т. Д.) Не обязательно, чтобы выбор места назначения был установлен в том же размере. – ChipsLetten

0

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

Set ady = Range("A1:C3") 
RngNumCol = ady.Columns.Count 
RngNumRow = ady.Rows.Count 

NewRngStart = ActiveCell.Address 'Here the starting cell of the new range 
NewRngEnd = Range(NewRngStart).Offset(RngNumRow - 1, RngNumCol - 1).Address 
Set NewRng = Range(NewRngStart, NewRngEnd) 

'Test 
For Each mycell In NewRng.Cells 
    mycell .Value = "Test" 
Next 
Смежные вопросы