| 
    
     |  | ▼にしもり さん: こんにちは
 >'↓UserFormに変えたことで、ここをどうかえればいいかわかりません。
 >
 >'  St = "[ユニットの番号を下表に従って入力して下さい]" & _
 >'  vbLf & "AA = 1 : "
 >'  For I = 1 To UBound(NmAry)
 >'  If I Mod 3 = 0 Then
 >'    St = St & NmAry(I - 2) & " = " & I - 1 & _
 >'    " : " & NmAry(I - 1) & " = " & I & _
 >'    " : " & NmAry(I) & " = " & I + 1 & vbLf
 >'  End If
 >'  Next I
 >'
 >'  St = Left$(St, Len(St) - 1)
 >'  Do
 >'    Num = Application.InputBox(St, Type:=1)
 >'    If VarType(Num) = 11 Then GoTo ELine2
 >'  Loop While CInt(Num) < 1 Or CInt(Num) > 19
 例えば、このあたりは、UserFormを利用するなら、ListBoxに選択肢を
 列挙しておいて、それを選択させるのも良いかと思います。
 
 >'  Unm = NmAry(CInt(Num) - 1): Col = ClAry(CInt(Num) - 1)
 >
 >'  MyR.Value = Unm
 >
 >   MyR.Value = Me.ComboBox1.AddItem NmAry(I)
 >   MyR.Interior.ColorIndex = Col
 >   ComS = InputBox("コメントを入力できます。")
 >   If ComS <> "" Then
 >     Cells(Rc, Sc).AddComment ComS
 >     Cells(Rc, Sc).Comment.Visible = False
 >   End If
 >  End If
 これも同様です。
 
 後、気づいた点ですが、
 Cells(Rc, Sc).AddComment ComS
 は
 worksheets("sheetname").Cells(Rc, Sc).AddComment ComS
 のように親オブジェクトを明示した方がバグが少ないプログラムが書けます。
 
 例としてUserFormにコンボボックスの例を紹介しましたが、
 データ数が少なければ、入力規則を利用してもいいのではないでしょうか?
 要は、Userにやさしいインターフェイスをと理解していただきたい。
 
 私なら、入力する全ての項目をUserForm内に配置して、出来るだけ
 マウスで処理できるようにして、誤入力をさせないように考えます。
 
 //////////////////////////////////////////////////////////////
 ここから先は、決して意地悪で書いているわけではありませんので
 誤解のないように願います
 
 仕様の一部を書かれていますが、私にはそれを理解し、テストデータを作成し、
 ロジックを考えプログラムを書く気はありませんのでお断りしておきます。
 
 技術上、手法などの質問にはわかる範囲でお答えしますし、気が向けば
 サンプルも書きますが、余りにもカスタムなものは基本的にはプログラム
 は書きません。
 こういうことをすると困るのは質問者です、現に書いてもらったロジック
 が判らなくて困っておられるでしょう?コード化はともかく、最低限
 ロジックはご自分で考えるべきです。プログラムで一番大事なのは
 そのロジックですから。
 
 現に作ってもらって今、改造に困っているでしょう???
 
 ベストなロジックかどうかは考えないでもいいです。
 最初は自分で考えたロジックを使うのが一番です。スキルが上がるに連れ
 効率の良いロジックを考えるようになりますが、先ず、希望通りに動作する
 のが第一です。
 
 
 |  |