[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル内の文字列を自動的に改行』(ろっしい)
セル(1,1)に110文字入力されているとします。ここからデータを取り出し、
20文字毎に改行して、セル(2,1)に代入するマクロを組みたいのですが、
ちょっと方法がわかりません。
(多分)流れで行くと
1. cells(1,1).value の値を取り出す
2.文字列の長さをカウントする ( Len が使えるような気がしますが・・・)
3.20文字ずつに文字列を分割する(この場合は最後10文字余ります)
4.最初の20文字と次の20文字の間に改行コードを入れる。以下順次。
5.文字列+改行コードが入ったデータをセル (2,2) に代入する
という感じだと思うのですが、私の技量では難しすぎてマクロを組むことができませんでした。
どなたかお知恵をお貸しいただけると幸いです。
上の流れとは関係なく、もっと簡単なマクロ、または関数でできるというのでもOK
ですので、よろしくお願いします m(__)m
Sub Test()
Dim s As String Dim i As Integer, n As Integer, myValue As Integer
n = 1 myValue = Int(Len(Cells(1, 1).Value) / 20)
If Len(Cells(1, 1).Value) Mod 20 = 0 Then myValue = myValue - 1 End If
For i = 1 To myValue s = s & Mid(Cells(1, 1).Value, n, 20) & vbCrLf n = n + 20 Next i
s = s & Mid(Cells(1, 1).Value, n, 20)
Cells(2, 1).Value = s
End Sub
作ってみました。こんな感じでいいんでしょうか (りな)
Sub sample() Dim i As Long For i = 1 To Len(Range("A1").Value) Step 20 Range("A2").Value = _ Range("A2").Value & Mid(Range("A1").Value, i, 20) & Chr(10) Next i End Sub
かな?
(INA)
横から質問させてください。 ろっしいさんの質問は、下セルにという指定ですよね。 ヘルプやこの学校の講義をコピーする身としては、ろっしいさんの質問プラス ○○文字毎にセル改行?(下の行に)になると大変便利だと重い、お聞きします。 関数だと、B1に=MID($A$1,(ROW()-2)*20+1,20) を下にコピー、というイメージだと思うんですが、 マクロだと、アクティブセルから始まるとして上記コードはどう変わりますか? マクロわかってません (kobi)
私も余り分かっていないのですがVBAの質問が有ると勉強の為、ついつい考えてしまいます。 Sub sample() Dim i As Long For i = 1 To Len(Range("A1").Value) ActiveCell.Offset(i - 1, 0) = Mid(Range("A1").Value, (i - 1) * 20 + 1, 20) Next i End Sub こんな感じで良いと思いますが、他にもっと良い方法が有るかも知れません。(ケン)
すいません、Range("A1")をアクティブセルにするとして、の間違いでした。 ケンさんのを参考に、いじってみます。 たが、早くも挫折 (kobi)
発想を変えて、[INA]さんのコードをパクッて Function にしてみました。
セルB1 に =inafunc(A1) で使えます。
この方が便利かもしれません。
(kazu)
Function inafunc(data) Dim i As Long For i = 1 To Len(data.Value) Step 20 inafunc = inafunc & Mid(data.Value, i, 20) & Chr(10) Next i End Function
Sub Test2()
Dim s As String Dim i As Integer, n As Integer, myValue As Integer
n = 1
With ActiveCell
myValue = Int(Len(.Value) / 20)
If Len(.Value) Mod 20 = 0 Then myValue = myValue - 1 End If
For i = 1 To myValue .Offset(i, 0).Value = Mid(.Value, n, 20) n = n + 20 Next i
.Offset(i, 0).Value = Mid(.Value, n, 20)
End With
End Sub
kobiさんが言っているのはこういうことでしょうか? 勘違いだったらごめんなさい (りな)
ろっしいさん、横から乱入してすみません。それから皆さんありがとうございました。 会社で確認やってみます。聞いておきながら寝てしまいました。 風邪気味 (kobi) けほんけほん
みなさん、本当にありがとうございます。朝PCを開いてこれだけ回答があり感激
しています。
幾つかの質問の中で、「セル(2,1)」に入れるかどうかというのがあったのですが、
これは話を具体的にするだけの意味で、現実的にはセル (m,k) に適宜入れるという
予定です。
とりあえずは、皆さんが書いてくださったコードをじっくり眺めて理解してみます。
取り急ぎお礼です。ありがとうございました m(__)m
p.s. また分からなかったら質問するかも知れませんが、よろしくお願いします。(ろっしい)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.