Excel VBA質問箱 IV

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

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


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

【28693】数値を文字列に変えるには なな 05/9/13(火) 2:16 質問[未読]
【28694】Re:数値を文字列に変えるには ichinose 05/9/13(火) 7:03 発言[未読]
【28695】Re:数値を文字列に変えるには かみちゃん 05/9/13(火) 7:15 回答[未読]
【28698】Re:数値を文字列に変えるには りん 05/9/13(火) 7:41 発言[未読]
【28712】Re:数値を文字列に変えるには なな 05/9/13(火) 12:36 お礼[未読]
【28805】再度確認 なな 05/9/15(木) 2:51 質問[未読]

【28693】数値を文字列に変えるには
質問  なな  - 05/9/13(火) 2:16 -

引用なし
パスワード
   1   01
2   02
3   03
23   23
45   45
56   65

こんな感じで、数字を、文字列にしたいのです。


Sub 文字列変換()

Dim a(6), b As String
Dim i, m As Integer

m = 1
For i = 1 To 6
  a(m) = Cells(m, 1)
  m = m + 1
Next

m = 1
For i = 1 To 6
  b = "0" + Str(a(m))
  Cells(m, 3) = Right(b, 2)
  m = m + 1
Next

End Sub
 
自分なりに作ってみましたが、うまくいきません。
頭に"0"をつけて、right関数で、右から二つを取り出したのですが、
だめでした。

right関数の使い方が間違っているのでしょうか?

【28694】Re:数値を文字列に変えるには
発言  ichinose  - 05/9/13(火) 7:03 -

引用なし
パスワード
   ▼なな さん:
おはようございます。
本当は、もうちょっと簡単な方法もあるんですけどね、
なな さんの方法で可能にしてみましょう!!


> 1   01
> 2   02
> 3   03
>23   23
>45   45
>56   65
>
>こんな感じで、数字を、文字列にしたいのです。
>
>
>Sub 文字列変換()
>
Dim a as string
'配列にする必要はありません
dim b As String
Dim i As Integer
'mは要らないんです
'm = 1

For i = 1 To 6
  a = Cells(i, 1).Value
  With Cells(i, 3)
   .NumberFormatLocal = "@"
    '書式を文字列に変更します
   .HorizontalAlignment = xlRight
    '右寄せ設定
   b = "0" & CStr(a)
'        Str関数は頭に空白が入るのでCstrに変更
   .Value = Right(b, 2)
   End With
  Next
>End Sub
 
試してみて下さい。

【28695】Re:数値を文字列に変えるには
回答  かみちゃん  - 05/9/13(火) 7:15 -

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

すでに、ichinoseさんからレスがついていますが、

>right関数の使い方が間違っているのでしょうか?

使い方は誤っていないと思いますが、セルの書式設定が「G/標準」になっている以上、
そのような事象になります。

そこで、数値を文字列に変換するには、Format関数を使うこともできます。
Sub Macro1()
 Dim i As Integer
 For i = 1 To 6
  Cells(i, 3).Value = Format(Cells(i, 1).Value, "00")
 Next
End Sub

【28698】Re:数値を文字列に変えるには
発言  りん E-MAIL  - 05/9/13(火) 7:41 -

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

> 1   01
> 2   02
> 3   03
>23   23
>45   45
>56   65
>  a(m) = Cells(m, 1)
>  Cells(m, 3) = Right(b, 2)

AのデータをCにということなので、
マクロを使わなくてもワークシート関数TEXTを使うと簡単です。
[C1] =TEXT(A1,"00")
下にフィル

【28712】Re:数値を文字列に変えるには
お礼  なな  - 05/9/13(火) 12:36 -

引用なし
パスワード
   Sub 文字列変換()

Dim a As String

  a = Format(Cells(1, 1).Value, "00")
  Cells(1, 3) = a

If a = "01" Then
MsgBox "同じです"
Else
MsgBox "ちがいます"
End If

数値を、文字列に変換して、変数aに代入するには、format関数を使えばいいのですね。
1を001に変換するには、"00"を"000"にすればよいのですね。

わかりました。
皆様、どうもありがとうございました。


End Sub

【28805】再度確認
質問  なな  - 05/9/15(木) 2:51 -

引用なし
パスワード
   上のマクロでは、数字が文字列になっていましたが、表示は、
01ではなくて、1のままですね。

どうやら、書式設定をしてやる必要があるみたいです。


Sub 文字列変換()

Dim a As String

  Cells(2, 1) = 1
  a = Format(Cells(2, 1).Value, "000")
  Cells(2, 3).NumberFormatLocal = "@" 
  Cells(2, 3).Value = a  

If Cells(2, 3) = "001" Then
MsgBox "同じです"
MsgBox a + a
Else
MsgBox "ちがいます"
MsgBox a + a
End If

End Sub

これでどうでしょうか。

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