目前我在每个Case语句中都有相同的代码,有时我必须重复50次,有没有办法简化这个: 对于每一个我必须创建40帧,每个帧也命名为VarFrame1 ... VarFrame40 我在Excel中的Visual Basic 6.5中创建此代码
For iVar = 1 To nrVars
Select Case iVar
Case 1
VarFrame1.Caption = varInfo(iVar).varName
VarFrame1.Top = lastRow
VarFrame1.Left = leftMargin
VarFrame1.Height = 12
VarFrame1.Visible = True
Case 2
VarFrame2.Caption = varInfo(iVar).varName
VarFrame2.Top = lastRow
VarFrame2.Left = leftMargin
VarFrame2.Height = 12
VarFrame2.Visible = True
.... to Case 50
End Select
lastRow = lastRow + 15
Dim res As Boolean
Select Case varInfo(iVar).varType
Case "RadioButton"
nrOptionButtonVals = nrOptionButtonVals + 1
res = SetUpOptionButtons(lastRow, iVar, nrOptionButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, False)
Case "RadioButtonOther"
nrOptionButtonVals = nrOptionButtonVals + 1
res = SetUpOptionButtons(lastRow, iVar, nrOptionButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, True)
Case "DropDown"
res = SetUpDropDown(lastRow, iVar, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
Case "CheckBox"
nrCBButtonVals = nrCBButtonVals + 1
res = SetUpCBButtons(lastRow, iVar, nrCBButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, False)
Case "CheckBoxOther"
nrCBButtonVals = nrCBButtonVals + 1
res = SetUpCBButtons(lastRow, iVar, nrCBButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, True)
Case "TextEntry"
res = SetUpTextEntry(lastRow, iVar, varInfo(iVar).varType, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
Case "DateEntry"
res = SetUpTextEntry(lastRow, iVar, varInfo(iVar).varType, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
Case "NumberEntry"
res = SetUpTextEntry(lastRow, iVar, varInfo(iVar).varType, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
End Select
lastRow = lastRow + 10
Next iVar
QuitButton.Top = lastRow
lastRow = lastRow + 30
PhraseDisplay.Height = lastRow + 50
DisplayCorrectedPhrase
SetUpForm = True
End Sub
更新了Tim Williams评论:
Public Function SetUpForm(ByRef thePhrase As String) As Boolean
Dim nrVars, iVar, lastRow As Integer
nrVars = Utilities.getNrPhraseVariables(thePhrase)
ReDim varInfo(0 To nrVars)
PhraseBoxOriginal.Text = thePhrase
For iVar = 1 To nrVars
varInfo(iVar).varName = Utilities.getPhraseVariable(thePhrase, iVar)
varInfo(iVar).varIndex = PhraseVars.getPhraseVarIndex(varInfo(iVar).varName)
varInfo(iVar).varType = PhraseVars.getTypeFromIndex(varInfo(iVar).varIndex)
varInfo(iVar).varOptions = PhraseVars.getOptionsFromIndex(varInfo(iVar).varIndex)
varInfo(iVar).varOptionText = PhraseVars.getOptionTextFromIndex(varInfo(iVar).varIndex)
varInfo(iVar).varValue = Utilities.getVarOption("", 0) ' Get the default option string
Next iVar
nrOptionButtonVals = 0
lastRow = 115
For iVar = 1 To nrVars
With Me.Controls("VarFrame" & iVar)
.Caption = varInfo(iVar).varName
.Top = lastRow
.Left = leftMargin
.Height = 12
.Visible = True
End With
Next iVar
lastRow = lastRow + 15
Dim res As Boolean
Select Case varInfo(iVar).varType
Case "RadioButton"
nrOptionButtonVals = nrOptionButtonVals + 1
res = SetUpOptionButtons(lastRow, iVar, nrOptionButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, False)
Case "RadioButtonOther"
nrOptionButtonVals = nrOptionButtonVals + 1
res = SetUpOptionButtons(lastRow, iVar, nrOptionButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, True)
Case "DropDown"
res = SetUpDropDown(lastRow, iVar, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
Case "CheckBox"
nrCBButtonVals = nrCBButtonVals + 1
res = SetUpCBButtons(lastRow, iVar, nrCBButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, False)
Case "CheckBoxOther"
nrCBButtonVals = nrCBButtonVals + 1
res = SetUpCBButtons(lastRow, iVar, nrCBButtonVals, varInfo(iVar).varOptions, varInfo(iVar).varOptionText, True)
Case "TextEntry"
res = SetUpTextEntry(lastRow, iVar, varInfo(iVar).varType, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
Case "DateEntry"
res = SetUpTextEntry(lastRow, iVar, varInfo(iVar).varType, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
Case "NumberEntry"
res = SetUpTextEntry(lastRow, iVar, varInfo(iVar).varType, varInfo(iVar).varOptions, varInfo(iVar).varOptionText)
End Select
lastRow = lastRow + 10
Next iVar
QuitButton.Top = lastRow
lastRow = lastRow + 30
PhraseDisplay.Height = lastRow + 50
DisplayCorrectedPhrase
SetUpForm = True
End Sub
答案 0 :(得分:4)
For iVar = 1 To nrVars
With Me.Controls("VarFrame" & iVar)
.Caption = varInfo(iVar).varName
.Top = lastRow
.Left = leftMargin
.Height = 12
.Visible = True
End With
Next iVar
答案 1 :(得分:1)
有两种选择: 1.使用在运行时添加的控件数组。 2.在启动时将每个控件添加到列表中,然后您只需迭代列表。
答案 2 :(得分:0)
您希望将所有框架都放在一个集合中,这样您就可以迭代它们并使用以下内容对它们进行初始化:
Sub initFrame(ByRef frame as VarFrame)
frame.Caption = varInfo(iVar).varName
frame.Top = lastRow
frame.Left = leftMargin
frame.Height = 12
frame.Visible = True
End Sub
For Each element As VarFrame In frames
initFrame(element)
Next
这样,如果您正在初始化许多帧,就像您不必重复代码一样。