Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6291 / 13646 ツリー ←次へ | 前へ→

【46105】テキストBOXデータをコンボBOX内に残したい youga 07/1/23(火) 1:30 質問[未読]
【46113】Re:テキストBOXデータをコンボBOX内に残し... ichinose 07/1/23(火) 9:17 発言[未読]
【46137】Re:テキストBOXデータをコンボBOX内に残し... youga 07/1/23(火) 23:53 質問[未読]
【46138】Re:テキストBOXデータをコンボBOX内に残し... かみちゃん 07/1/24(水) 0:10 発言[未読]
【46141】Re:テキストBOXデータをコンボBOX内に残し... ichinose 07/1/24(水) 7:53 発言[未読]
【46167】Re:テキストBOXデータをコンボBOX内に残し... youga 07/1/25(木) 0:09 お礼[未読]

【46105】テキストBOXデータをコンボBOX内に残した...
質問  youga  - 07/1/23(火) 1:30 -

引用なし
パスワード
   同じUSER FORM内で1つのTEXTBOXを使用して入力された内容をコマンドボタンで
処理して保存、1つのCOMBOBOX内に蓄積して行きたいのですがACTIVE SHEETを介さずに出来る方法はありませんか?

【46113】Re:テキストBOXデータをコンボBOX内に残...
発言  ichinose  - 07/1/23(火) 9:17 -

引用なし
パスワード
   ▼youga さん:
おはようございます。


ユーザーフォーム(Userform1)に
  テキストボックス---Textbox1
  コンボボックス-----Combobox1
  コマンドボタン-----Commandbutton1
が配置されていたとします。

このUserform1のモジュールに

'=============================================================
Option Explicit
'=============================================================
Private Sub CommandButton1_Click()
  With ComboBox1
    If .ListCount = 0 Then
     ReDim temp(0, 0)
     temp(0, 0) = TextBox1.Value
     .List = temp()
     Erase temp()
      
    ElseIf IsError(Application.Match(TextBox1.Value, .List, 0)) Then
     .AddItem TextBox1.Value
     End If
    End With
End Sub

標準モジュールに
'=========================================================
sub main()
  userform1.show
ens sub

でmainを実行してみてください

Userform1が表示されたら、
  テキストボックスに適当な文字を入れ、コマンドボタンを押してください。
  コンボボックスにテキストボックスの内容がリストとして登録されます。
  尚、既に登録されている内容は重複チェックを行い、登録をいたしません。

こんな仕様になっています。
試してみてください。

Excel2002で確認

【46137】Re:テキストBOXデータをコンボBOX内に残...
質問  youga  - 07/1/23(火) 23:53 -

引用なし
パスワード
   ▼ichinose さん:
ありがとうございました。できました。
USEFORM内のXボタンで閉じてしまうと入力データが全て
消されてしまいます。なんとかなりませんか?

【46138】Re:テキストBOXデータをコンボBOX内に残...
発言  かみちゃん  - 07/1/24(水) 0:10 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>UserForm内のXボタンで閉じてしまうと入力データが全て
>消されてしまいます。

何がしたいのかよくわかりませんが、
ComboBoxなどUserForm上に配置されているコントロールの値は、UserFormを閉じて
しまうと破棄されます。
したがって、なんとかしたい場合は、Sheetなどに書き出す必要があります。
なお、そのシートを見られたくないなら、非表示などにしておけばいいだけかと思います。



【46141】Re:テキストBOXデータをコンボBOX内に残...
発言  ichinose  - 07/1/24(水) 7:53 -

引用なし
パスワード
   おはようございます。

>USEFORM内のXボタンで閉じてしまうと入力データが全て
>消されてしまいます。なんとかなりませんか?

かみちゃんさんが仰っているように

>ComboBoxなどUserForm上に配置されているコントロールの値は、UserFormを閉じて
>しまうと破棄されます。
>したがって、なんとかしたい場合は、Sheetなどに書き出す必要があります。

これは、コンボボックスのリストデータをどこかに保存しなくてはなりません。
シート以外にも保存する方法はいくつか考えられますが、シートにデータを
保存するのが一番安全です。

何てったってシートは、究極のスーパーカリスマ? テンポラリ領域なのですから。
Excelを使うのにこのシートを使わないのは、もったいないですね!!

前回の投稿の修正も合わせて

>ユーザーフォーム(Userform1)に
>  テキストボックス---Textbox1
>  コンボボックス-----Combobox1
>  コマンドボタン-----Commandbutton1
>が配置されていたとします。
>
>このUserform1のモジュールに

'=============================================================
Option Explicit
'=============================================================
Private Sub CommandButton1_Click()
  With ComboBox1
    If .ListCount = 0 Then
     .List = Array(TextBox1.Value) '←これの方が簡単でした
    ElseIf Trim(TextBox1.Text) <> "" And _
       IsError(Application.Match(TextBox1.Value, .List, 0)) Then
     .AddItem TextBox1.Value
     End If
    End With
End Sub
'=============================================================
Private Sub UserForm_Initialize()
  With Worksheets("sheet1")
    With .Range("a1", .Cells(.Rows.Count, "a").End(xlUp))
     If .Cells(1).Value <> "" Then
       ComboBox1.List = .Value
       End If
     End With
    End With
End Sub
'=============================================================
Private Sub UserForm_Terminate()
  With Worksheets("sheet1")
    .Range("a:a").ClearContents
    If ComboBox1.ListCount > 0 Then
     .Range("a1", .Cells(ComboBox1.ListCount, "a")).Value = ComboBox1.List
     End If
    End With
End Sub


標準モジュールに

'=============================================================
Sub main()
  UserForm1.Show
End Sub


これでmainを実行してみてください。
仕様は、前回と同じですが、コンボボックスのリストデータの保存場所として、
Sheet1というシートのA列を使っています。
よって、初期値としては、Sheet1のA列は、未入力の状態にして置いてください。

これにより、一度登録したコンボボックスリストは、再表示の際、
コンボボックスにSheet1のA列から、再登録されます。

試してみてください。

【46167】Re:テキストBOXデータをコンボBOX内に残...
お礼  youga  - 07/1/25(木) 0:09 -

引用なし
パスワード
   ▼ichinose さん:
>おはようございます。
>
やはり、だめですね。わかってはいたのですが基本的にずれて

いたようですね。なるべく操作等を省きたい目的でいろいろ思案して

いたのですが、いつの間にか基本から遠のいていたようです。

ただ、ichinoseさんのやり方をすればある程度簡素化出来る事が

わかりました。

また、相談にのって頂く事があると思います。

その時は、ぜひよろしくお願いします。

6291 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free