2013-12-06 3 views
0

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

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

Sub TestMacro() 

    Range("B" & "12").Select 
    ActiveCell.FormulaR1C1 = InputBox("Name") 
    Range("c" & "12").Select 
    ActiveCell.FormulaR1C1 = InputBox("Northing") 
    Range("d" & "12").Select 
    ActiveCell.FormulaR1C1 = InputBox("Easting") 
    Range("e" & "12").Select 
    ActiveCell.FormulaR1C1 = InputBox("Transition Length (Ls)") 
    Range("f" & "12").Select 
    ActiveCell.FormulaR1C1 = InputBox("Minimum Radius (Rc)") 
    Range("g" & "12").Select 
    ActiveCell.FormulaR1C1 = InputBox("Central Angle (DELTA)") 
    Range("u" & "13").Select 
    ActiveCell.FormulaR1C1 = Range("B160") 
    Range("v" & "13").Select 
    ActiveCell.FormulaR1C1 = Range("C160") 
    Range("w" & "13").Select 
    ActiveCell.FormulaR1C1 = Range("D160") 
    Range("x" & "13").Select 
    ActiveCell.FormulaR1C1 = Range("E160") 

End Sub 

ответ

0

Что может работать для вас, чтобы использовать событие на листе и UserForm:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
     UserForm1.Show 
     MsgBox UserForm1.TextBox1 ' do stuff with form objects 
     Set UserForm1 = Nothing ' skip this step to retain form values between calls 
    End Sub 

Создать UserForm, чтобы захватить данные, то обрабатывать данные о возврате из формы.

В этом случае форма появляется каждый раз, когда вы меняете ячейки на листе, чтобы это не было лучшим решением. Вы можете поместить один и тот же код в SUB() и добавить ярлык ключ:

Sub GetData() 
     UserForm1.Show 
     MsgBox UserForm1.TextBox1 ' do stuff with form objects 
     Set UserForm1 = Nothing ' skip this step to retain form values between calls 
    End Sub 

Откройте диалоговое окно Макросы на вкладке Разработчик (вам может понадобиться, чтобы включить вкладки в Options), затем установите ключ ShortCUT через Параметры ... для макроса GetData.

Вы можете предварительно загрузить некоторые объекты на UserForm:

Sub GetData() 
     UserForm1.TextBox1 = "Hello" 
     UserForm1.Show 
     MsgBox UserForm1.TextBox1 ' do stuff with form objects 
     Set UserForm1 = Nothing ' skip this step to retain form values between calls 
    End Sub 
Смежные вопросы