Я использую Excel VBA.Мне нужно создать кнопку макроса, которая запускает форму пользователя.Форма пользователя попросит 3 аргумента.«Имя рабочего листа», «Количество стран» и «Заказ» (первые 2 ввода будут даны в текстовых полях, но «Заказ» будет из поля со списком).Макрос должен создать новый лист в книге, названный независимо от того, что пользователь вводит для «Имя листа».В этой рабочей тетради есть лист под названием «Страны», в котором перечислены некоторые страны, начиная с ячейки А2 и продолжая вниз в колонке А. В зависимости от входных данных для «Количество стран» этот макрос должен копировать это число стран из существующихсписок и вставьте их на вновь созданный лист.Наконец, если пользователь выбирает «Обратный» в качестве своего ввода для «Порядка», список следует перевернуть.
Например ... вы открываете макрос, вводите «Новый материал», «5» ивыберите «Обратный».После нажатия «ОК» Excel должен создать лист «Новые материалы», куда он вставляет:
Чили Канада Великобритания Бразилия Австралия Аргентина
Все это следует делать, обрабатывая эти списки как массивы.
Прямо сейчас у меня есть пользовательская форма под названием CreateList.В нем есть текстовые поля с названиями SheetText и NumRows, а также поле со списком OrderList (в качестве параметров я хочу использовать «Normal» и «Reverse»).
Пользовательская форма подключается к следующему коду
Private Sub CreateList_Initialize()
OrderList.AddItem "Normal"
OrderList.AddItem "Reverse"
OrderList.ListIndex = 0
End Sub
Private Sub OKButton_Click()
Call CountrycPasting(SheetText.Value, NumRows.Value, OrderList.Value)
Unload Me
End Sub
Который подключается к следующему коду:
Option Explicit
Sub CountryPasting(SheetText As String, NumRows As Integer, OrderList As String)
Dim Countries(NumRows) As Integer 'here's what my array should be
Dim Row As Integer
Worksheets.Add Before:=Worksheets(1)
ActiveSheet.Name = SheetText
Worksheets("Countries").Range(A2).Select
For Row = 1 To NumRows
Countries(Row) = Selection.Value
Selection.Offset(1, 0).Select
Next Row
Worksheet(SheetText).Range(A3).Select
For Row = 1 To NumRows
Selection.Value = Countries(Row)
Selection.Offset(1, 0).Select
Next Row
End Sub
Sub Load_Form()
CreateList.Show
End Sub
Здесь куча проблем.Прежде всего, «Нормальный» и «Обратный» даже не отображаются в качестве параметров в поле со списком в пользовательской форме.Кроме того, я понятия не имею, что делать с изменением списка.Примерно так: если OrderList.Value = Reverse, то ....И когда я пытаюсь запустить это только с помощью первой пары входов, я получаю сообщение об ошибке «требуется постоянное выражение» в отношении строки «Dim Country (NumRows) As Integer» (я также попытался затемнить как строку), безрезультатно).