- ベストアンサー
VBA 文字列に関して
現在 A22のセルに入力された文字列をボタンを押せば ばらばらにしてA22のセルから順番に入れるマクロを作りました (例)A22のセルに ”こんにちわ”の文字列が入っている場合 ボタン押下 ↓ A22のセル⇒こ B22のセル⇒ん C22のセル⇒に D22のセル⇒ち E22のセル⇒わ になる。 不思議なことに数字を16文字以上いれてボタンを押し文字を分離すると入力していない文字、数字が入ってしまいます。 数字だけこういう現象が発生してしまいます。 例えば "1111111111111111"と入力して文字を分離した場合 1.11111111111111E+15と個々のセルに格納されます。 原因がわかる方、教えて頂けないでしょうか? 以下がコードです。宜しくお願い致します。 Private Sub CommandButton1_Click() Dim one As String Dim myString As String myString = Cells(22, 1) numString = Len(Cells(22, 1)) If Len(myString) <= 50 Then For i = 1 To Len(Range("A22").Value) one = String(1, myString) Cells(22, i) = one myString = Replace(myString, one, "", 1, 1, vbTextCompare) Next i End If End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Mid$関数を使えば、下記のように簡潔に実現できます。 Private Sub CommandButton1_Click() Dim myString As String With Application.ActiveSheet myString = .Cells(22, 1).Value If Len(myString) <= 50 Then For i = 1 To Len(myString) .Cells(22, i).Value = Mid$(myString, i, 1) Next i End If End With End Sub
その他の回答 (1)
- taknt
- ベストアンサー率19% (1556/7783)
"1111111111111111"と入力するセルの書式を文字列にしてから、 "1111111111111111"と入力してやってみてください。 数値の場合は、指数化されてしまうのが原因ですね。