Excel VBA質問箱 IV

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

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


2595 / 13645 ツリー ←次へ | 前へ→

【67001】TextBoxに入力するデータの型について 八家九僧陀 10/10/25(月) 13:26 質問[未読]
【67002】Re:TextBoxに入力するデータの型について kanabun 10/10/25(月) 13:54 発言[未読]
【67006】Re:TextBoxに入力するデータの型について ichinose 10/10/25(月) 19:02 発言[未読]

【67001】TextBoxに入力するデータの型について
質問  八家九僧陀  - 10/10/25(月) 13:26 -

引用なし
パスワード
   マクロ初心者です。

TextBox1に入力したデータを確実に「数値」データとして、あるいは「日付」データとして、シートの所定セルに転記するにはどうすればよいのでしょう?

現在 TextBox1に入力してシートに転記すると、文字列として入力されてしまいます。
それを数値データとして、あるいは日付データとして利用したいのですが・・・

数値型の場合
Dim myKei as integer
myKei = TextBox1.Value

日付型の場合
Dim myKei as date
myKei = TextBox1.Value

と変数宣言すれば解決するのでしょうか。

また、ユーザーフォーム上に氏名、住所や生年月日等の複数のTextBoxがあり、その入力のたびに「全角」「半角」ボタンを押しているのですが、全角のままで入力して、文字列は文字列として、数値型は数値として、日付型は日付として入力できる方法はありませんか?

ほんとに初歩的な質問で申し訳ありませんが、そんなこともわからんのか、一から勉強しなおせ・・・的な回答ではなく、こういうコードを記述すればいいよと具体的なコードをお示しください。
勝手なことを申しますが、よろしくお願いします。

【67002】Re:TextBoxに入力するデータの型について
発言  kanabun  - 10/10/25(月) 13:54 -

引用なし
パスワード
   ▼八家九僧陀 さん:

>現在 TextBox1に入力してシートに転記すると、文字列として入力されてしまいます。
>それを数値データとして、あるいは日付データとして利用したいのですが・・・
>
>数値型の場合
>Dim myKei as integer
>myKei = TextBox1.Value
>
>日付型の場合
>Dim myKei as date
>myKei = TextBox1.Value
>
>と変数宣言すれば解決するのでしょうか。
>

質問はご自分で試してみれば分かることですよね?

 Range("A1").Value = TextBox1.Text
 Range("A2").Value = TextBox2.Text

TextBoxのテキストは文字列です。
ただし、現在のVBA(というかExcelは)はセルに代入するとき、
テキストを解釈してくれ、
数値であればセルに貼り付いた途端に数値型(Double型)で代入してくれます。
また、日付けと解釈できれば、日付型(Date型)でセルに格納してくれます。
Excelのこの解釈がときおり「要らんお世話」になる時があります。
「1-2」などが日付けと解釈されることがある。
 
暗黙の型変換を許さない他言語では、自前で型キャストを行う
必要があります。これをVBAで書くと、以下のような書き方です。

 If IsNumeric(TextBox1.Text) Then
   Range("B1").Value = Val(TextBox1.Text)
 End If
 If IsDate(TextBox2.Text) Then
   Range("B2").Value = CDate(TextBox2.Text)
 End If

【67006】Re:TextBoxに入力するデータの型について
発言  ichinose  - 10/10/25(月) 19:02 -

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


>現在 TextBox1に入力してシートに転記すると、文字列として入力されてしまいます。
>それを数値データとして、あるいは日付データとして利用したいのですが・・・

どのようにセルに設定しているのでしょうかねえ・・・。

私が知っている限りでは、対象のテキストボックスが TextBox1だとすると、

Range("A1").value=TextBox1

こんなコードを実行すると、確かにTextBox1に数字を入力しても
セルA1には、文字列としての数字が設定されます。

Range("A1").value=TextBox1.text
Range("A1").value=TextBox1.value

とすれば既投稿のとおり、セルには、数値が設定されます。

確認してみてください

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