Excelのいくつかのコードで奇妙なことが起こっています
Private Sub CommandButton2_Click()
Dim thiswb As Workbook
Set thiswb = ActiveWorkbook
Call EnterDataToSS(thiswb)
Me.Hide
BeamNoFind.Show vbModal
End Sub
呼び出されたコードは、基本的にいくつかの値をスプレッドシートにドロップします。残った値は、BeamNoFind ユーザーフォームの LISTBOX1 に入力されます。
BeamNoFind ユーザーフォームには、ボタンと LISTBOX1 があります。listbox1 から項目を選択してボタンをクリックすると、3 番目のユーザーフォーム (VBMODELESS) が開き、値を配置できます。
以下は、3番目のユーザーフォームを表示するボタンのコードです。
Private Sub CommandButton2_Click()
Dim Selected_Length As String
Dim Selected_Name As String
Dim Selected_Length_index As Integer
Selected_Length_index = BeamNoFind.ListBox1.ListIndex
With BeamNoFind.ListBox1
If .ListIndex > -1 Then
Selected_Name = .Column(0, .ListIndex)
Selected_Length = .Column(1, .ListIndex)
CellInputForm.beam_length_label.Caption = Selected_Name & " [ " & Selected_Length & " ] "
BeamNoFind.Hide
'ChngDataSrc.Hide
'Unload ChngDataSrc
CellInputForm.Show vbModeless
Else
MsgBox "No selection", vbExclamation, "Oops!"
End If
End With
End Sub
奇妙なことに、ボタンをクリックしてモードレスユーザーフォームを表示し、データをセルに配置すると、最初のマクロがトリガーされ、最初のユーザーフォームにドロップされます。コメント付きのコード 'ChngDataSrc.Hide' と 'Unload ChngDataSrc' がある場所は、ユーザーフォームが表示されたくないときに表示されないようにする試みです。フォームをアンロードすると、フォームが表示される代わりにエラーが発生します。エラーは最初のマクロにあります。
Sub get_scheduling_data(control As IRibbonControl)
ChngDataSrc.Show
End Sub
「CellInputForm.Show vbModeless」行の「vbModeless」を「vbModal」に置き換えると、不要なフォーム(ChngDataSrc)なしで正しく表示されるため、vbModeless と関係があります。しかし、フォームの機能(セルを選択し、OKボタンを押し、選択したセルに値を入れる)はなくなります。