エクセルVBAのChr(10)の挿入と削除

このQ&Aのポイント
  • エクセルVBAでのChr(10)の挿入と削除について教えてください。結合されたセル内に他のプログラムから送られてくる値を挿入する必要がありますが、値の文字数や行数は都度変わります。ボタンを押すたびにChr(10)の改行を挿入したり削除したりしたいのですが、どのようにすればよいでしょうか?
  • エクセルVBAでのChr(10)の挿入と削除方法を教えてください。結合されたセル内に他のプログラムから送られてくる値を挿入する必要があり、値の文字数や行数は変わります。ボタンを押すたびにChr(10)の改行を挿入したり削除したりする機能を作りたいです。
  • エクセルVBAでのChr(10)の挿入と削除について質問です。結合されたセル内に他のプログラムから送られてくる値を挿入する必要がありますが、値の文字数や行数は都度変わります。Chr(10)の改行を挿入したり削除したりするためのコマンドボタンを作りたいのですが、どのようなVBAコードを書けば良いでしょうか?
回答を見る
  • ベストアンサー

エクセルVBAのChr(10)の挿入と削除

宜しくおねがいします 現在結合されたセルがありそのセル内に他のプログラムから 下記の値が挿入されるようになっています。 あいうえお かきくけこ さしすせそ たちつてと (Chr(10)の改行) (Chr(10)の改行) (Chr(10)の改行) (Chr(10)の改行) 他のプログラムから送られてくる値は”あ行”の1行だけだったり ”ま行”までの7行あったりとその都度変わってきます。 文字数も”あ”の1文字だけだったり”あああいいいうううえええおおお”と 文字数も変わります。 しかし下の4行分の”Chr(10)の改行”の数は変わりません。 やりたいことは↓ コマンドボタンを二つ作り、ボタンを押すたびに下にあるChr(10)の改行を 挿入したり削除したりしたいのですがどのようにすればよいのでしょうか? 追加ボタンを2回押すとChr(10)の改行が6行分になり そこから削除ボタンを3回押すとChr(10)の改行が3行分になる・・・という感じです。 試しにマクロの記録で セルを選択して改行を削除 をしてみたのですが思うような動きをしてくれません。 なぜChr(10)なのかとかいうのは聞かないでください・・・ そこから説明すると長くなるので。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

Sub CommandButton1_click()  activecell.value = activecell.value & vbLf End Sub Sub CommandButton2_click()  dim buf as string  buf = activecell.value  If right(buf, 1) = vbLf then  activecell.value = left(buf, len(buf) - 1)  end if End Sub 単純に足したり削ったりするだけのようですが。

half_half
質問者

お礼

ありがとうございます やりたいことはこれでした!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問者の言っていることおよび必要性(コマンドボタンを2つも設けるのかなど)が良くわからない。 ーー したいことは、いつもそのセルは10行分(空白行も含めて)とかの一定行数分にしたいのではないのか。 もしそうなら、変数に原データがセットされた段階で、その変数の値のChr(10)の数を数え、10-(その数)だけ「文字列の後尾にChar(10)を加えれば仕舞いではないのか。 >Chr(10)の数を数えーー一案としてChr(10)を空白で置き換え、文字列の長さのバイト数減少がChr(10)の存在した数で割り出す。 参考 Replace関数 http://officetanaka.net/excel/vba/function/replace.htm 別にVBAにはReplaceメソッドもある。 == 誤解しておればこの回答は無視してください。

回答No.2

とりあえず行単位の削除、追加を・・・ LineAddとLineDel関数を書いてみましたのでボタンから呼び出してください ※データが入っている行も削除できますのでNGな場合は  IF文などでチェックしてください Sub LineAdd() Dim str() As String str = Split(Range("A1").Text, Chr(10)) ReDim Preserve str(UBound(str) + 1) Range("A1").Value = Join(str, Chr(10)) End Sub Sub LineDel() Dim str() As String str = Split(Range("A1").Text, Chr(10)) If UBound(str) = 0 Then '1行しかない場合、セルをクリア Range("A1").Value = "" Else ReDim Preserve str(UBound(str) - 1) Range("A1").Value = Join(str, Chr(10)) End If End Sub

half_half
質問者

お礼

補足とお礼を間違えました

half_half
質問者

補足

ありがとうございます。 こちらの方法でもやって見ます!

関連するQ&A

  • アクセス 改行 Chr(10)とChr(13)

    アクセスのフォームの、Enter キー入力時動作を「フィールドに行を追加」にして、 改行できる状態にした時、エンターキー改行したら、 入力される文字はChr(10)とChr(13)のどちらになるのでしょうか?

  • Excel VBA で 書式設定(セル内の一部のみ)

    こんにちは。教えてください。 1つのセル内に、 あいうえお1か きくけこ2 さしすせそ3たち。 つてと45.67 などと、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。 その1行目(上記の例で言うと、「あいうえお1か」)のみ、フォント赤色の書式設定を、マクロで行いたいのですが、できますでしょうか? ご回答よろしくお願いいたします。

  • Excel VBA で 一括書式設定(選択セルのみ)

    おはようございます。教えてください。 結合されたセル内に、 あいうえお1か き?! くけこ2 さしすせそ3たち。 つてとな45.67 というように、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。 それらの1行目(上記の例で言うと、「あいうえお1か」)のみフォント緑色、2行目はフォント青色、3行目以降はフォント黒色の書式設定を、選択セルすべてに対し、マクロで行いたいのです。 1行目だけなら以下のマクロでできたのですが、2行目以降の参照の仕方がわかりません。 Sub 一行目緑() For Each c In Selection With c.Characters(Start:=1, Length:=InStr(c.Value, Chr(10)) - 1).Font .ColorIndex = 10 End With Next End Sub ご回答よろしくお願いいたします。

  • 【Excel VBA】セル内に改行を挿入したい

    セル内で左から数えて10文字毎に改行(折り返し)させたいのですが、 どのようにコーディングすればよろしいでしょうか? 例) セルA1の値が "あいうえおかきくけこさしすせそたちつてとなにぬねの" の場合、 "あいうえおかきくけこ さしすせそたちつてと なにぬねの" としたいです。 ※セルの値は、CSVから自動取得して貼り付ける仕様になっています。  またセルの書式設定は、"折り返して全体を表示する"に事前に設定します よろしくお願いします。

  • エクセルで一つのセル内で空白の行だけ削除したい

    WindowsXP エクセル2003を使用しています。 一つのセル内の空白の行だけを削除したいのですが、方法はありますか? 具体的にはA1内に下記のように入力があります。 -------------------------------------------------------------------- あいうえお かきくけこ さしすせそ たちつてと -------------------------------------------------------------------- 「かきくけこ」と「さしすせそ」の間の空白の行だけ削除したいのですが、可能でしょうか? 他の行の改行はそのまま残したいので、CLEANだと無理でした。

  • excel vba 日付型の2つの値を一つのセルに入力する方法

    excel vbaについて教えてください。 Wという変数にDate型で"1:00"という数値が入っており、 Zという変数にDate型で"2:00"という数値が入っています。 この二つを、同じセル内に改行して挿入したいと思っています。 Cells(1, 1) = W & Chr(10) & Z 上記のようにセットしようとすると、 4.16666…7E-02 4.16666…7E-02 といったように値が変形してしまいます。 1:00、2:00という値は前処理で時刻の比較などをしているため、 文字列型にすることはできません。 どのようにしたら 1:00 2:00 といった形にできるでしょうか? 途中で(セルに挿入する直前で)文字列型に 変換する、というようなことはできるでのしょうか? よろしくお願いします。

  • Excel VBA で 一括書式設定(セル内の一部のみ)

    こんにちは。教えてください。 1つのセル内に、 あいうえお1か き! くけこ2 さしすせそ3たち。 つてと45.67? というように、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。そういうセルが、一行にいくつも並んでいます(途中に空白もあります)。 それらの1行目(上記の例で言うと、「あいうえお1か」)のみ、フォント赤色の書式設定を、マクロで行いたいのです。 そこで、以下のマクロを実行すると、選択セルがひとつだけのときは問題ないのですが、複数のセルを選択すると実行時エラー(型が一致しません)が出てしまいます。 Sub 一行目赤() With Selection.Characters(Start:=1, Length:=InStr(Selection.Value, Chr(10)) - 1).Font .ColorIndex = 3 End With End Sub 選択セルのすべてに対し、一括で書式設定できるようにするにはどうしたらよいでしょうか?ご回答よろしくお願いいたします。

  • エクセルVBAのヒントをください

    エクセルのある列に、文字列が入っているとします。 たとえば、Aであったり、Cであったり、A,C,Fとカンマ区切りで複数の文字列(個数は不定) が入っていたりします。 このとき、一行に一つの文字列しか含まないように、カンマで区切られた文字列を展開し、 複数行に分けて格納したいと思っています。 たとえば、一番上の行のセルにA、二番目の行に「C,D,A」、三番目の行にB、四番目の行に 「E,A」と入っていたら、各行に一文字列のみ入るように、上からA、C、D、A、B、E、Aという行を 作りたいと思います。各セルに含まれる文字列の個数は不定で、規則性はありません。 基本的に、 (1)各セルに含まれているカンマの数を調べる (2)カンマの数だけ次の処理を繰り返す  ・行挿入   ・最初のカンマの位置を調べる   ・先頭からカンマまでを切り取る   ・上記の値をセルに入力  ・行挿入   ・2番目のカンマの位置を調べる   ・1番目のカンマの位置+1から2番目のカンマの位置まで切り取る   ・上記の値をセルに入力 上記をカンマの数だけ繰り返す。 といった具合にしていくのだと思いますが、このような処理をするのに はどの程度のVBAのスキルが必要ですか? 上記のヒントや、参考になるサイト、書籍があればご教授ください。

  • エクセルのVBAについて

    先程も質問させていただきました。 列を上から順に調べていって、セルがFという文字列でない場合にそのセルの行を削除するプログラムはどうすればよいのでしょうか?よろしくお願いします。 よろしくおねがいします。

  • excelでセル内の改行を削除する

    excelの改行削除について質問です。 セル内の改行を一括削除する方法として「Ctrl」+「J」の 置換でできると思うのですが、文字がたくさん入っているセルに 対して行うと、「数式が長すぎます。」のポップアップが出てしまいます。 CLEAN関数で行おうとするも、文字数が多いためかきちんと表示されません。 他に何か良い方法はないでしょうか?

専門家に質問してみよう