excelでフォームを使ってシートにデータの入力をしているのですが、
日付の入力で○月○日のところを月、日それぞれ、コンボボックスを使って2桁の文字列入力にしています。例えば4月のところは「4」ではなく、「04」と入力します。
 コンボボックスなので、直接入力もできるため、たまに一桁で入力してしまうことがあり、計算結果が狂うことが起こっています。このミスを防ぐため、入力先のセル自体に入力規則(2桁のみ可)を設定しましたが、フォームからの入力ではエラーとならず、そのまま入力されてしまいます。
 リストボックスを使ってリストのみから入力できるようにすればよいのかもしれませんが、コンボボックスの方がなにかと都合がよいのでコンボボックス自体に入力規則を設定できればと思っています。何かよい方法があるでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

私が良く使う方法を書いておきます。

参考になるでしょうか?

1:コンボボックスの "MaxLength" プロパティを "2" にします。
2:コンボボックスの "AfterUpdate" イベント内に、1桁入力の場合に "0" を補うコーディングを入れます。

Right$("0" & ComboBox1.Text ,2)

これで、0~9の入力のときは、01~09になります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの「入力規則」→「リスト」の機能を、あるセルに使った時に、そのセルにリスト以外の文字も入力出来るようにするには?

エクセルの「入力規則」→「入力値の値」の
「リスト」の機能は便利な機能だと思いますが、
急遽、リスト以外の文字も入れなければいけない事態が
あった場合に、他の文字が入力できなかったりします。
私がファイルを全て管理す分にはリストの範囲を
広げたり修正したりできるのでいいのですが、
他の(あまりエクセルを使った事がない)人が
使う場合に、他の文字をいれたい場合に、入れれないで
戸惑ってしまうかもしれません。
ドロップダウンで文字を選択する機能も残しつつ、
手入力も出来るように機能を追加する事はできますでしょうか?

Aベストアンサー

実は私も同じことで以前なやんだのですが、実は単純に
リストを設定する際に、「エラーメッセージ」タブをクリック⇒「不正なデータが入力されたらエラーメッセージを表示する」に入ってるチェックをはずす、これで、リストから選ぶまた、リストにない値を入力するということができるようになります。

Q入力規則のリストボックス

エクセルの入力規則でリストボックスを使って選択したいのですが
その時に、数字のみを抽出する方法はないですか?
例えば
1:りんご
2:みかん
3:バナナ
をリストから選択する時、番号のみが表示されるように
したいのです。
リストにはその番号がどれに該当するかわかるように
りんご、みかん、バナナという内容も表示させたいのです。
よろしくお願いします。

Aベストアンサー

「入力規則」にタグ「入力時メッセージ」があります。
ここの“メッセージ”に対応表を書き込むと
セルを選択したときに、ポップアップで対応表が表示されます。
あとは、好みの位置に移動すれば出来上がり。

上記方法は如何でしょう。

QVBA のフォームでTxtボックスとコンボボックス

エクセル2013で、やっとのことでマクロのフォーム(txt入力のみを5項目)を完成させることができました。
次に、そのうちの一つは曜日の入力なのでこれをコンボボックスにして、一覧を出してマウスで選択するように変更したいのですがどうもうまくいきません。マクロは初めてなので基本的な考え方ができていないのです。
 
そこで質問なのですが、参考書には 

Private Sub UserForm_Initialize

End Sub

にマクロを記入するとなっていますが、これをもとの曜日入力ボックスと置き換えることはできないのでしょうか。それとも、終了ボタンのマクロと同じように、別のプロシージャにしないといけないのでしょうか。

それから、これはあまり重要ではないかもしれませんが、私がコンボボックスを作成するとマクロに
Combbox_Changed
のようなプロパティ(?)が表示されて、ヘルプを見てもよくわかりません。これはどういうことなのでしょうか。

よろしくお願いします。

Aベストアンサー

目についたので回答してみます。
私もそんなに詳しくないので間違っていたらすみません。

基本的な概念がわかればご自身でも勉強できそうなので
VBAの初歩の考え方を少しご説明します。

-------------------------------
Private Sub UserForm_Initialize

End Sub
-------------------------------

まずVBA(及びVB)の基本的なコードの見方として以下の様な見方をします。
オブジェクト名:好きに付ける事ができます。
イベント名:VBの中で決まっており、オブジェクトによって可能な動作に違いがあったと思います。
------------------------------------
Private Sub オブジェクト名_イベント名
ここには処理を書くよ!
End Sub
------------------------------------

上記の「イベント名」と表現したのは、VBAのプログラムが
イベント駆動型プログラミングだからです。
どういった物がイベントになるかというと、「クリック」や「選択」(チェクボックスのチェックなど)が
それに当たります。

そしてオブジェクト名というのはVBAの世界でフォーム、ボタン、ラベル、コンボボックスなど
すべて「オブジェクト」と呼ばれる物になります。

これらの内容を合わせて先ほどのコードを見ると以下の様な感じになります。
--------------------------------------
※オブジェクト:UserForm・・・フォームを作成した時の元から設定されているフォーム名
※イベント名:Initialize・・・イニシャライズなので初期化とかの意味

Private Sub フォームの_初期化時

'フォームが表示された時に動かす処理

End Sub
---------------------------------------

これは後に書いている質問の回答になります。
バージョンによって少し違うのかもしれませんが・・・

イベントとの中で、コンボボックスはChangedイベントというイベントが存在します。
何かというと、ComboBoxで何かが選ばれたら処理をするというイベントです。

以下が日本語で表した場合の例になります。
-------------------------------------------------
Private Sub ComboBox1_Change()
   'ComboBox1のリストの中から何か選ばれた場合の処理
   処理1:ComboBox1の値が土曜か日曜の場合は画面に「今日は休日です」を表示
   処理2:ComboBox1の値が月曜日~木曜日の場合は「今日は平日です」を表示
End Sub
-------------------------------------------------


######### ↓ここからが今回の本題↓ ###############

なぜCombBoxの値の設定に、フォームの初期化の処理がでてくるのか・・・
それは、フォームの初期化時にCombBoxのリストの内容を追加しているからです。

※ComboBox1の部分は作成しているCombBox名によって変わります。
  (Excel2007の一つ目に作成したComboBoxはComboBox1)
------------------------------------
Private Sub UserForm_Initialize
'ここには処理を書くよ!
  ComboBox1.AddItem "月"
  ComboBox1.AddItem "火"
  ComboBox1.AddItem "水"
  ComboBox1.AddItem "木"
  ComboBox1.AddItem "金"
  ComboBox1.AddItem "土"
  ComboBox1.AddItem "日"
End Sub
------------------------------------

なかなか説明は難しいものですね。
参考になれば幸いです。

目についたので回答してみます。
私もそんなに詳しくないので間違っていたらすみません。

基本的な概念がわかればご自身でも勉強できそうなので
VBAの初歩の考え方を少しご説明します。

-------------------------------
Private Sub UserForm_Initialize

End Sub
-------------------------------

まずVBA(及びVB)の基本的なコードの見方として以下の様な見方をします。
オブジェクト名:好きに付ける事ができます。
イベント名:VBの中で決まっており、オブジェクトによって可能な動作に違いがあったと思い...続きを読む

Qエクセル 入力規則を使ったリストボックスの▼を常に表示したい

表題の通り、入力規則を使って、別シートからデータをリンクできるように名前の定義を利用してリスト選択できるようにしました。ですが、そのセルは特に目印がなく、リスト選択ボタンは、そのセルを選択しない限りは表示されませんよね?ですから、この▼のリストボタンだけを常に表示しておいて目印にしておきたいのですが、いろいろ過去ログみましたがわかりません。どのようにすればよいでしょうか?よろしくお願いいたします。ちなみにこれは印刷時にはこのボタンは見えないのが都合よく、パソコン上で編集の時のみ見えればそれでよいのですが。

Aベストアンサー

#3の補足に対して
#3のSelection.ListFillRange = "F1:F4"の下に
Selection.LinkedCell = "A" & i
を入れてください。これで選択されたコンボの値がセルの値になります。
そして
下記を実行して、印刷してみてください。
Sub teat02()
ActiveSheet.OLEObjects.Visible = False
End Sub
画面からはコンボが消えました。
復活する仕組みにするには、シートにコマンドボタンを貼り付け
消す・表示するをコントロールしてください。少しのVBAの知識を
前提にしてます。
表示に戻すには。
Sub teat03()
ActiveSheet.OLEObjects.Visible = True
End Sub
コンボ等を抹消するのは
Sub teat04()
ActiveSheet.OLEObjects.Delete
End Sub

QExcel VBA ユーザーフォームのコンボボックスに表示する値の入力方法

Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。
WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。
できるだけ詳しく教えていただけませんか?

したいことは、
 cbocenter というコンボボックスに値を出します。
 値は List シートの A2 から A18 に入力済みです。
 それと値から選択した値を data シートの J列 に
 表示させたいのです。(行の指定はできています)

本当に困ってます。よろしくお願いします。

Aベストアンサー

#2です。

全容が見えないので何とも言えないのですが、現在アクティブのCellがJ上にある場合、次のコードで放り込めます。

VBAがそこそこわかっておられるようなので、このヒントで組みこんでもらえるのでないでしょうか?

Excelの場合、コンボボックスに1列しか表示できないので、とりあえず、その値を放り込んで残りの値(shinsei hizuke bangou)はlookup関係の関数を用いれば、引っ張ってこられると思います。Accessのコンボだと、コンボに列方向にも値を持たせられるんですが、、、Excel For Macにこれが採用されているなら、これを利用した方が簡単かと思います。


Private Sub ComboCenter_Change()
'Private Sub ComboCenter_Click() ← Click イベントでもいいかも
Dim Num As Integer

Num = ComboCenter.ListIndex

If ActiveCell.Column = 10 Then
ActiveCell = Worksheets("List").Cells(Num + 2, 1)
End If

End Sub

#2です。

全容が見えないので何とも言えないのですが、現在アクティブのCellがJ上にある場合、次のコードで放り込めます。

VBAがそこそこわかっておられるようなので、このヒントで組みこんでもらえるのでないでしょうか?

Excelの場合、コンボボックスに1列しか表示できないので、とりあえず、その値を放り込んで残りの値(shinsei hizuke bangou)はlookup関係の関数を用いれば、引っ張ってこられると思います。Accessのコンボだと、コンボに列方向にも値を持たせられるんですが、、、Excel For Macにこ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報