Excel VBA質問箱 IV

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

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


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

【38808】数値にLeft関数を使用 質問者 06/6/11(日) 0:00 質問[未読]
【38809】Re:数値にLeft関数を使用 kobasan 06/6/11(日) 0:32 発言[未読]
【38810】Re:数値にLeft関数を使用 ichinose 06/6/11(日) 6:30 発言[未読]
【38811】Re:数値にLeft関数を使用 kobasan 06/6/11(日) 6:47 お礼[未読]
【38821】Re:数値にLeft関数を使用 Nori 06/6/11(日) 16:07 発言[未読]
【38822】Re:数値にLeft関数を使用 ichinose 06/6/11(日) 16:29 発言[未読]
【38832】Re:数値にLeft関数を使用 質問者 06/6/11(日) 21:34 お礼[未読]

【38808】数値にLeft関数を使用
質問  質問者  - 06/6/11(日) 0:00 -

引用なし
パスワード
   質問です。
数値が"200603"とあって、左4文字をLeftを使って
2006をセルに入力させようとしたのですが、何故か
200と入力してしまいます。
F8を使って動作確認したところ" 200"と入力していました。
右2文字をRight関数を使用して"03"とちゃんとセルに反映
していました。
キチンと何がいけなかったのでしょうか?

【38809】Re:数値にLeft関数を使用
発言  kobasan  - 06/6/11(日) 0:32 -

引用なし
パスワード
   今晩は。

>質問です。
>数値が"200603"とあって、左4文字をLeftを使って
>2006をセルに入力させようとしたのですが、何故か
>200と入力してしまいます。
>F8を使って動作確認したところ" 200"と入力していました。
>右2文字をRight関数を使用して"03"とちゃんとセルに反映
>していました。
>キチンと何がいけなかったのでしょうか?

数値の前に1文字分あるということです。
下記を試してみてください。

Sub test()
Dim n As Long
Dim s As String
  n = 666
  s = "999"
  
  MsgBox "数値nの文字数 " & Len(n) & vbCr _
     & "文字列Sの文字数 " & Len(s)
End Sub

【38810】Re:数値にLeft関数を使用
発言  ichinose  - 06/6/11(日) 6:30 -

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

kobasan さん:
>数値の前に1文字分あるということです。
↑これは、違うよ!!
>Sub test()
>Dim n As Long
>Dim s As String
  n = 200603
>  s = "999"
>  
>  MsgBox "数値nの文字数 " & Len(n) & vbCr _
>     & "文字列Sの文字数 " & Len(s)
'としても数値の文字数は4だから・・・・
>End Sub

これは、Long型の使用バイト数なのでいつも4です。「n=0」でも4です!!

質問者さん、

>何故か200と入力してしまいます。

このLeft関数を使って200という値となるコードを見せてください。

Left関数が上記の現象を起こすコードとして、

Sub test2()
  Dim n As Long
  n = 200603
  MsgBox Left(Str(n), 4)
  MsgBox right(Str(n), 2)
End Sub

こんなのが考えられますが・・・。

【38811】Re:数値にLeft関数を使用
お礼  kobasan  - 06/6/11(日) 6:47 -

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

n = 1222222

も4でした。

>これは、Long型の使用バイト数なのでいつも4です。「n=0」でも4です!!

また1つ勉強できました。有難うございました。

【38821】Re:数値にLeft関数を使用
発言  Nori  - 06/6/11(日) 16:07 -

引用なし
パスワード
   失礼します

Dim n As String
   n = 200603
  MsgBox Left(n, 4)
  MsgBox Right(n, 2)

ではダメでしょうか?

>>これは、Long型の使用バイト数なのでいつも4です。「n=0」でも4です!!

Iong使ってはダメですか?

【38822】Re:数値にLeft関数を使用
発言  ichinose  - 06/6/11(日) 16:29 -

引用なし
パスワード
   ▼Nori さん:
こんにちは。

>失礼します
>
>Dim n As String
>   n = 200603
>  MsgBox Left(n, 4)
>  MsgBox Right(n, 2)
>
>ではダメでしょうか?
これでよいですよね、普通にLeft関数で処理すれば、

>2006をセルに入力させようとしたのですが、何故か
>200と入力してしまいます。

ということは起こりませんよね?


>
>>>これは、Long型の使用バイト数なのでいつも4です。「n=0」でも4です!!
>
>Iong使ってはダメですか?
↑これの真意がわかりません

【38832】Re:数値にLeft関数を使用
お礼  質問者  - 06/6/11(日) 21:34 -

引用なし
パスワード
   多数のご意見ありがとうございます。
早速試して見ます。

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