2013-05-31 8 views
-1

A1 имеет список, который включает в себя 12 месяцев года
B2 до M2 строки являются месяцев - января по декабрь
B3 к B7 категоризирует, которые набрано каждый месяцMacro изменить значения диапазона ячеек значений только

Я хочу запрограммировать кнопку, чтобы сделать следующее:
Когда я нажимаю кнопку, я хочу, чтобы макрос просматривал месяц на ячейке A1 в диапазоне ячеек B2:M2. Затем в ячейке соответствия меняются значения только на значениях row 3 до row 7. Прямо сейчас rows 3 до 7 связаны с другими ячейками. Я хочу, чтобы они были преобразованы в значения только.

E.g. Если январь выбран в A1. Затем макрос идентифицирует B2 как январь и изменяет значения B3:B7 только значениям.

+2

Что вы пробовали? Это совместный сайт, а не сайт «бесплатный аутсорсинг». –

+0

У меня нет подсказки о том, как это сделать – user2441238

+2

Какой вид поиска вы пытаетесь? ВПР? ГПР? Индекс? Совпадение? Попробуйте выполнить запись макроса во время выполнения действия вручную. Затем отправьте код. Это также поможет включить скриншот вашего рабочего листа (загрузите изображение на Imgur.com и сообщите нам URL-адрес). –

ответ

0

Я получил эту таблицу:

enter image description here

вход находится в A1

Чтобы упростить вещи, которые я использовал формулу A2: =MATCH(A1,$B$2:$M$2,0)+1

Затем добавили кнопку ACTIVEX PressMe.

Щелчок правой кнопкой мыши по кнопке в дизайн-режиме и, глядя на «Просмотр кода» Я получил следующее:

Private Sub cmdPressMe_Click() 

Application.ScreenUpdating = False 

    Dim colNumber As Integer 
    colNumber = Me.Range("A2").Value 
    With Me.Range(Me.Cells(3, colNumber), Me.Cells(7, colNumber)) 
     .Copy 
     .PasteSpecial xlPasteValues 
    End With 
    Application.CutCopyMode = False 
    Me.Range("A1").Select 

Application.ScreenUpdating = True 

End Sub 

Альтернативой выше, который не использует буфер обмена следующее:

Private Sub cmdPressMe_Click() 

Application.ScreenUpdating = False 

    Dim colNumber As Integer 
    colNumber = Me.Range("A2").Value 

    Dim firstRange As Range 

    Set firstRange = Me.Range(Me.Cells(3, colNumber), Me.Cells(7, colNumber)) 
    firstRange.Value = firstRange.Value 

Me.Range("A1").Select 
Application.ScreenUpdating = True 

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