• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#4564
noname#4564
回答No.1

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)
回答No.2

"1111111111111111"と入力するセルの書式を文字列にしてから、 "1111111111111111"と入力してやってみてください。 数値の場合は、指数化されてしまうのが原因ですね。