我正在构建一个锻炼记录应用程序,允许用户在用户窗体运行时添加运动、代表次数和相关的重量。(您也可以将其视为“拣货”,例如“3”“红色”“铅笔”、“2”“蓝色”“马克笔”等)
单击“+”按钮时,代码会添加两个文本框和组合框。
单击“-”按钮时,只会删除最后添加的控件组,但如果再次单击“-”按钮,我将收到“Catastrophic Failure”错误消息。
我很确定这些控件需要删除,controls.remove (object).name但是一旦最后一个组被删除,我需要将对象变量更新为下一个可以删除的组,我正在努力解决。
我在这里找到了类似的问题和答案,但那些删除了所有用户表单控件。我只想删除最后添加的组。
Option Explicit
Public movementCounter As Integer
Public repsTextBox As Object
Public movementComboBox As Object
Public weightTextBox As Object
Public cntrlsColl As Collection
Private Sub addMvmtCmndButt_Click()
movementCounter = movementCounter + 1
Set repsTextBox = Controls.Add("Forms.TextBox.1")
Set movementComboBox = Controls.Add("Forms.ComboBox.1")
Set weightTextBox = Controls.Add("Forms.TextBox.1")
With repsTextBox
.Name = "RepsTextBox" & movementCounter
.Height = 18
.Width = 45
.Left = 10
.Top = 30 * (movementCounter - 1) + 5
End With
With movementComboBox
.Name = "MovementComboBox" & movementCounter
.Height = 18
.Width = 90
.Left = 65
.Top = 30 * (movementCounter - 1) + 5
.RowSource = listsSht.Range("movementList").Address
End With
With weightTextBox
.Name = "WeightTextBox" & movementCounter
.Height = 18
.Width = 45
.Left = 165
.Top = 30 * (movementCounter - 1) + 5
End With
End Sub
Private Sub deleteMvmtCmndButt_Click()
'Works, but only for the most recently added group of controls
With Me.Controls
.Remove repsTextBox.Name
.Remove movementComboBox.Name
.Remove weightTextBox.Name
End With
'update what the next group of controls will be on-deck
' If movementCounter > 0 Then
' repsTextBox.Name = "RepsTextBox" & movementCounter
' movementComboBox.Name = "MovementComboBox" & movementCounter
' weightTextBox.Name = "WeightTextBox" & movementCounter
' End If
End Sub
