我正在学习 VBA。两件事情:
示例代码:
Private Sub NBInv_Change()
If NBInv.Text = "0" Or NBInv.Text = "" Then
ActiveSheet.Shapes("NFlow").Visible = False
ElseIf NBInv.Value < NEBInv.Text And NBInv.Text < NEBInv.Text _
And NBInv.Text < EBInv.Text And NBInv.Text < SEBInv.Text _
And NBInv.Text < SBInv.Text And NBInv.Text < SWBInv.Text _
And NBInv.Text < WBInv.Text And NBInv.Text < NWBInv.Text Then
ActiveSheet.Shapes("NFlow").Visible = True
ActiveSheet.Shapes("FlowNFalse").Visible = False
End If
End Sub
您可以简化在代码中设置 Visible 属性。Val(NBInv.Value)将为所有非数字值和数字返回0。CBool()将0转换为False,并将所有其他转换为True。
Private Sub Solution()
Dim HasValue As Boolean
HasValue = CBool(Val(NBInv.Value))
ActiveSheet.Shapes("NFlow").Visible = HasValue
ActiveSheet.Shapes("FlowNFalse").Visible = Not HasValue
End Sub
以下函数将返回列出的所有控件中值最低的那个。
私有函数最小()
Dim Fun As Variant Dim Tmp As Variant Dim Inv() As String Dim i As Integer Inv = Split("NBInv NEBInv EBInv SEBInv SBInv SWBInv WBInv NWBInv") Fun = 10 ^ 6 For i = 0 To UBound(Inv) Tmp = Val(ActiveSheet.OLEObjects(Inv(i)).Object.Value) If Tmp < Fun Then Fun = Tmp Next i Smallest = Fun
结束函数
变量 Fun 必须设置为比您希望在文本框中遇到的任何值都大的值。我选择了 10^6。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句