advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19634 for 20�����������������������... (0.004 sec.)
[[20031218114734]]
#score: 2681
@digest: 1eff1add98eec1ccfc0944cd40dcd7ac
@id: 4470
@mdate: 2003-12-18T23:29:33Z
@size: 4138
@type: text/plain
#keywords: inafunc (29755), myvalue (18284), 字毎 (8375), 朝pc (7005), 邪気 (6506), 下順 (4605), kobi (4372), 味( (4213), 風邪 (2031), ル( (2000), 気味 (1920), 行コ (1767), 改行 (1541), 列+ (1355), integer (1297), ブセ (1058), value (835), 順次 (768), 代入 (753), ケン (712), 文字 (675), function (621), activecell (609), 便利 (595), 感激 (577), クテ (513), ィブ (471), mid (469), len (443), アク (420), 流れ (419), 記コ (412)
『セル内の文字列を自動的に改行』(ろっしい)
セル(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. また分からなかったら質問するかも知れませんが、よろしくお願いします。(ろっしい) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200312/20031218114734.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97028 documents and 607994 words.

訪問者:カウンタValid HTML 4.01 Transitional