Excel VBA質問箱 IV

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

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


9542 / 13644 ツリー ←次へ | 前へ→

【26787】入力フォームについて nossori 05/7/18(月) 10:06 質問[未読]
【26788】Re:入力フォームについて kobasan 05/7/18(月) 10:14 回答[未読]
【26792】Re:入力フォームについて ponpon 05/7/18(月) 12:28 発言[未読]
【26795】Re:入力フォームについて nossori 05/7/18(月) 15:35 質問[未読]
【26798】Re:入力フォームについて ponpon 05/7/18(月) 16:19 回答[未読]
【26799】Re:入力フォームについて ponpon 05/7/18(月) 16:39 回答[未読]
【26801】Re:入力フォームについて nossori 05/7/18(月) 17:39 お礼[未読]

【26787】入力フォームについて
質問  nossori  - 05/7/18(月) 10:06 -

引用なし
パスワード
   入力フォームについてお聞きしたいのですが。

○メッセージボックスでアラーム
入力のテキストボックスが3ケあります。
入力データをA,B,C列に転送させています。
入力時にテキストボックスの3ケ所に埋めることを忘れた場合、
アラームをメッセージボックスで出そうとしたのですか、エラーが
でます。コードの何処が問題でしょうか?
⇒If TextBox1.Value Or TextBox2.Value Or TextBox3.Value = "" Thenのコード
でエラーがでます。

○入力文字をすべて半角英数に指定
入力は「月/日」「氏名ID」「金額」です。すべて半角英数に指定したいのですが・・・
プロパティ-ウィンドウで指定できるのでしょうか。

Private Sub CommandButton1_Click()

Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Value = TextBox1.Value
ActiveCell.Offset(, 1).Value = TextBox2.Value
ActiveCell.Offset(, 2).Value = TextBox3.Value

TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox3.SetFocus
TextBox2.SetFocus
TextBox1.SetFocus
If TextBox1.Value Or TextBox2.Value Or TextBox3.Value = "" Then
MsgBox "入力に空きがあります"
End If

Range("A65536").End(xlUp).Offset(1, 0).Select
End Sub

【26788】Re:入力フォームについて
回答  kobasan  - 05/7/18(月) 10:14 -

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

>⇒If TextBox1.Value= "" Or TextBox2.Value= "" Or TextBox3.Value = "" Then

だと思います。

【26792】Re:入力フォームについて
発言  ponpon  - 05/7/18(月) 12:28 -

引用なし
パスワード
   こんにちは。
>If TextBox1.Value Or TextBox2.Value Or TextBox3.Value = "" Then
>MsgBox "入力に空きがあります"
>End If
と最後に判定していますが、
>TextBox1.Value = ""
>TextBox2.Value = ""
>TextBox3.Value = ""
の後では、いつも "入力に空きがあります"となるのでは?

コードを私なりに整理してみました。

Private Sub CommandButton1_Click()

  If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Then
   MsgBox "入力に空きがあります"
  Else
   With Range("A65536").End(xlUp).Offset(1, 0)
     .Value = TextBox1.Value
     .Offset(, 1).Value = TextBox2.Value
     .Offset(, 2).Value = TextBox3.Value
   End With
  
   TextBox1.Value = ""
   TextBox2.Value = ""
   TextBox3.Value = ""
   TextBox1.SetFocus
  End If
End Sub

【26795】Re:入力フォームについて
質問  nossori  - 05/7/18(月) 15:35 -

引用なし
パスワード
   ▼ponpon さん kobasan さん
こんにちは。ありがとうございました。

▼ponpon さん:
ご指摘の通りですね。ありがとうございます。
私も何度か動かしていておかしい、っと気がつきました。
素晴らしい整理を頂きありがとうございます。
Withの構成に慣れておらず勉強になりました。
ありがとうございます。

textBox3は、数字が3桁以上になります。
textbox内にて、コンマを入れる方法は無いでしょうか?
もしや、短いコードで在れば教えてください。
また、良く深いですが、数字が右端から出るような方法も
しりたいのですが・・・

よろしくお願いします。

【26798】Re:入力フォームについて
回答  ponpon  - 05/7/18(月) 16:19 -

引用なし
パスワード
   こんにちは。

>textbox内にて、コンマを入れる方法は無いでしょうか?
これでいいかも

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If IsNumeric(TextBox3.Value) Then
   Me.TextBox3.Value = Format(TextBox3.Value, "#,##0")
  End If

End Sub

>数字が右端から出るような方法も

意味不明です。よくわかりません。

【26799】Re:入力フォームについて
回答  ponpon  - 05/7/18(月) 16:39 -

引用なし
パスワード
   こんにちは。

>>数字が右端から出るような方法も

>意味不明です。よくわかりません。

この意味かな?

Private Sub UserForm_Initialize()
  Me.TextBox3.TextAlign = fmTextAlignRight
End Sub

とするよりも、ユーザーフォームにテキストボックスやコマンドボタンを
貼り付けるときに
TextBox3のプロパティーで、TextAlignを3に
すればよいと思います。

この意味でなかったらごめんなさい。

【26801】Re:入力フォームについて
お礼  nossori  - 05/7/18(月) 17:39 -

引用なし
パスワード
   ▼ponpon さん:

ありがとうございます。

>>この意味かな?
>
>Private Sub UserForm_Initialize()
>  Me.TextBox3.TextAlign = fmTextAlignRight
>End Sub
>
>とするよりも、ユーザーフォームにテキストボックスやコマンドボタンを
>貼り付けるときに
>TextBox3のプロパティーで、TextAlignを3に
>すればよいと思います。
>
>この意味でなかったらごめんなさい。

表現が悪くご迷惑をかけしました。
この事です。ありがとうございました。
「コンマ」(千桁)もプロパティーでできないのか探しましたが・・・
Valueの欄で出来ないか見ていましたが無理そう?です。
ありがとうございました。

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