Я занимаюсь исследовательским проектом и пытаюсь упростить процесс ввода данных. Хотя теоретически я мог бы просто ввести данные непосредственно в таблицу, я боюсь, что я окажусь в неправильном ряду и в итоге случайно перезаписываю предыдущую запись или просто полностью теряюсь, когда получаю пару сотен строк. В идеале я хотел бы сделать форму, которая будет автоматически заполнять строки Excel. Я бы предпочел сделать это с помощью программного обеспечения, но я не нашел ничего хорошего и пришел к выводу, что мне нужно использовать VBA. Это проблема, так как я не делал никакого кода, кроме нескольких недель HTML в компьютерном лагере, когда я был ребенком. Я впервые отхожу от базовых процессов в Excel (также почему VBA выглядит точно так же, как Office 2003?)
Я хочу, чтобы у меня было несколько стилей ввода данных (свободный ввод, раскрывающийся список, переключатели и чтобы информация по каждому предмету помещалась в отдельную строку. В идеале, я бы также хотел, чтобы некоторые варианты были выделены серым цветом). всю строку (и исключить ее из моих данных), если она удовлетворяет моим критериям исключения. В некоторых случаях я бы также хотел иметь возможность ввести значение и иметь следующий столбец поверх помечать его как «ненормальный», если он выпадает из заданного диапазона, но я могу сделать обе эти вещи вручную, если он становится слишком сложным.
До сих пор моим главным выводом из моих исследований было то, что VBA, похоже, то, что я должен использовать. Я попытался просмотреть несколько разных видео по этой теме, и я в некоторой степени могу создать форму. Моя единственная проблема здесь заключается в том, что я не могу понять, как добавить опции в мои выпадающие списки. Я пытаюсь сделать это, перейдя в «просмотр» «код» и затем введя
Private Sub ComboBox1_Change()
ComboBox1.AddItem([apples],[bananas])
End Sub
Но я получаю "Ошибка компиляции: ожидается =", поэтому, очевидно, я где-то ошибаюсь.
Кроме того, в моей форме не хватает места, и я не вижу, как сделать больше места (с полосой прокрутки) внизу (я могу сделать его только таким же высоким, как мой экран).
Тем не менее, большая проблема здесь, очевидно, заключается в том, чтобы выяснить, как на самом деле я получаю свои данные для отправки на сам лист Excel, чтобы я мог их проанализировать. Я даже не знаю, с чего начать. Пример кода, который я вижу в Интернете, кажется очень отличным от того, что я пытаюсь сделать (для моих неподготовленных глаз) - например, пример на https://www.contextures.com/xlUserForm02.html
У кого-нибудь есть код, который ближе к тому, что я пытаюсь? Я возьму любую помощь, которую смогу получить.
Редактировать: Я нашел в сети какой-то код, который, кажется, соответствует тому, что я пытаюсь сделать (мне все еще нужно выяснить радио-блоки, я могу просто использовать больше выпадающих меню, даже если это больше кликов), но я получаю "ошибка компиляции: элемент уже существует в объектном модуле, из которого этот объект выводится" Я скопировал его отсюда, как указано, а затем отредактировал его, чтобы он соответствовал моим полям, поэтому я не уверен, что пошло не так:
Private Sub problem()
'Populate control.
Me.cboClass.AddItem "Amphibian"
Me.cboClass.AddItem "Bird"
Me.cboClass.AddItem "Fish"
Me.cboClass.AddItem "Mammal"
Me.cboClass.AddItem "Reptile"
End Sub
Private Sub addcase()
'Copy input values to sheet.
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 1).Value = nmbr
.Cells(lRow, 2).Value = problem
.Cells(lRow, 3).Value = age
End With
'Clear input controls.
patientnmbr = ""
Chiefcomplaint = ""
agebox = ""
End Sub
Private Sub cmdClose_Click()
'Close UserForm.
Unload Me
End Sub