こちらの続きです。
全ての寸法に番号バルーンを付ける5 - C#ATIA
もう、十分な牛歩戦術。
作成するバルーンの先頭番号を入力させますが、当然
自然数でなければNGの為、該当しない入力時は赤文字に切り替え
OKボタンはグレーアウトにする ぐらいの実装は、
UI嫌いな僕でも行う必要性は感じています。
Form側のCodeです。
先頭番号のテキストボックスはMe.StartNumberで
OKボタンはMe.OkButtonです。
Private Sub StartNumber_Change() Dim startNumberBox As TextBox Set startNumberBox = Me.StartNumber If is_natural_number(startNumberBox.text) Then 'ok startNumberBox.ForeColor = &H80000008 Me.OkButton.Enabled = True Else 'ng startNumberBox.ForeColor = &HFF Me.OkButton.Enabled = False End If End Sub '有効な番号か? Private Function is_natural_number( _ ByVal txt As String) _ As Boolean is_natural_number = False If Len(txt) < 1 Then Exit Function End If If Not IsNumeric(txt) Then Exit Function End If Dim num As Long On Error Resume Next If CLng(txt) <> CDbl(txt) Then Exit Function End If On Error GoTo 0 is_natural_number = True End Function
ん~考えたらVBAのフォームは殆どやったことが無いです。
テキストボックスのChangeイベントを利用していますが、
違和感が・・・。
用語がFusion360API的になってしまい申し訳ないのですが、
特定のコントロールのイベントを作成する事が出来るは
凄く有難いのですが、イベントハンドラー内で
"どのコントロールからイベントが発生したのか?"
の取得方法が分かりませんでした。(検索していないです)
"Me" だとフォーム全体になるので、そこから該当する
コントロールを探し出す必要が有るんですよね。
イベントを発生させたコントロールが必要になる場面て、
無いのかな?何となく有りそうな気もするんだけど。
バルーンを事前にチェックして、見つかった番号の最大+1を
入力デフォルトに設定する親心も実装。
あっこのままだとダブりも出ちゃうな。完成が遠い・・・。