Я надеюсь, что кто-то может помочь мне с запросом. Пока у меня есть таблица Excel, и вы выбираете ячейку, а затем нажмите кнопку, кнопка открывает форму пользователя с помощью полосы прокрутки и, когда вы используете полосу прокрутки, это редактирует число в ячейке на + -1 вверх/вниз до границ которые вы вводите в текстовые поля. Это перемещает графики, связанные с каждой ячейкой в реальном времени. Когда я закрываю форму пользователя, исходные значения заполняются обратно в ячейках.Использование пользовательской формы для настройки диапазона ячеек
Надеюсь, что при использовании электронной таблицы люди смогут выбрать несколько ячеек (случайное число ячеек, иногда вы можете выбрать 2 или 7 или 10 для изменения), и пользовательская форма повлияет на все из них таким же образом выше, однако у меня возникают проблемы с этим. Это позволит людям увидеть влияние взаимодействия между этими элементами.
Чтобы заставить его работать на одной ячейке я определил переменную как открытые за пределами пользовательской формы, как так:
Public SelRange As Integer
Тогда в UserForm_Initialize
:
SelRange = Selection
Тогда есть код макс, мин, приращениях и т. д., и когда используется полоса прокрутки, значение вносится в активную ячейку по коду:
Selection = SelRange
Однако, если я выберу несколько ячеек и попробую сделать это, я получаю несоответствие типа, которое предполагает, что я должен определить SelRange
по-другому, но я не могу понять, что это такое или даже если это действительно поможет ситуации.
Благодарим за помощь.
Полный код ниже:
код для кнопки:
Public SelRange As Integer
Sub Button1_Click()
UserForm1.Show
End Sub
Код для Scroll Bar в UserForm:
Option Explicit
' Sets default values for when the Userform is opened
Public Sub UserForm_Initialize()
MinBox.Value = -100
MaxBox.Value = 100
IncBox.Value = 5
SelRange = Selection
End Sub
'Ensures that the default starting point is midway between the min and max values specified
Sub scrollbar1_enter()
Dim x As Double
Dim y As Double
y = MaxBox.Value
x = MinBox.Value
ScrollBar1.Value = (x + y)/2
Selection = SelRange
End Sub
'Sets all parameters in the scroll bar
Private Sub Scrollbar1_Change()
ScrollBar1.Max = MaxBox.Value
ScrollBar1.Min = MinBox.Value
ScrollBar1.LargeChange = IncBox.Value
ScrollBar1.SmallChange = IncBox.Value
Selection = ScrollBar1 + SelRange
End Sub
'Default on exit of userform
Private Sub ScrollBar1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim x As Double
Dim y As Double
y = MaxBox.Value
x = MinBox.Value
ScrollBar1.Value = (x + y)/2
End Sub
'ensures activecell is updated in real time with dragging of mouse
Private Sub ScrollBar1_Scroll()
Selection.Value = ScrollBar1.Value + SelRange
End Sub
Не будет ли SelRange быть диапазоном, а не целым? –
Я пробовал это, и он дает мне ошибку «Объектная переменная или с блочной переменной не установлена» и не будет работать. – Sam
, если 'SelRange' является« диапазоном », вам необходимо назначить ему, используя' Set' - 'Set SelRange = Selection'. – aucuparia