• ベストアンサー

エクセルのマクロでセル内改行を設定する方法

XP・Excel2003使用のマクロ素人です。 エクセルのマクロを使って、ある特定の文字の手前でセル内改行する方法を教えてください。 例えば「■」の手前で改行したいのですが・・・ ■今日は■あたたかい■日でした ↓ ■今日は ■あたたかい ■日でした 宜しくお願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。#2 のWendy02です。 >例えば、マクロを使わなくても自動的にこのような結果が得られる方法があるのですか?ご存知でしたら教えてください。 たぶん、その「自動的」というのは、元の質問とあわせると、そういう印が入ったら自動的に、改行コードが入るという意味と解釈してよいのでしょうか? 半分は可能ですが、反面、いくつかマイナス要因があります。 VBAの言葉で、「明示的」と「暗黙的」というものに別れますが、「暗黙的」といって、自分が意図しないにも関わらず、行える、というのは理想的なのですが、限定した範囲ならともかく、ワークシート全体を補佐するものだとすると、負荷が大きいので、あまり賛成できないのです。 #2 のコードは、「明示的」といって、ユーザーが範囲を選択し、マクロコマンドを選ぶ、ユーザーの意図して行うものです。 シートモジュールの中に、以下のようなスタイルでマクロを挟んで少し細工してやれば、文字を入力すれば自動的に変更にはなりますが、少し、使用感を試してもらう必要はあるかと思います。あまり、私は、闇雲に、これが良いとはお勧めできません。 '(イベント・ドリブン型マクロ) 'シートモジュール(Sheet1 は、Sheet1 のモジュール) Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Const MYMARK As String = "■" '区切り文字 Const START_FLG As Boolean = False '先頭も改行を入れる? With Target 'マウス選択の範囲 (ここだけ変わる)  For Each c In .Cells   If InStr(c.Value, vbLf) = 0 Then     c.Value = Replace(c.Value, MYMARK, vbLf & MYMARK)   End If   If START_FLG Then c.Value = Mid$(c.Value, 2)  Next End With End Sub もう少し、手直しする要素はあります。Excelはソフトウェアといっても、ある程度は、ユーザーの組み込みプログラムで変更は出来ます。その段階によって、レベルが変わってきます。その中のイベント・ドリブン型マクロは、初級の設定方法だと申すことは出来ます。

googooquestion
質問者

お礼

ご丁寧にありがとうございます。 今回は、マウス選択の範囲にした方がよさそうですので、2番目の回答を参考にさせていただきました。 とても助かりました、ありがとうございます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 マクロがご希望だということでしたので、こんな風にしたらどうでしょうか? >ある特定の文字の手前でセル内改行する方法を教えてください。 ですが、最初の「■」のところで、改行を入れるかどうかは、以下のように選択にします。 START_FLG が、False なら、そのまま入れてしまいます。True なら、先頭は入りません。ただし、False で行った後に、もう一度、True に換えて行えば、先頭の部分だけ、Chr(10) =vbLF は、削除できます。 Sub EnterLf() Dim c As Range Const MYMARK As String = "■" '区切り文字 Const START_FLG As Boolean = False '先頭も改行を入れる? With Selection 'マウス選択の範囲  For Each c In .Cells   If InStr(c.Value, vbLf) = 0 Then     c.Value = Replace(c.Value, MYMARK, vbLf & MYMARK)   End If   If START_FLG Then c.Value = Mid$(c.Value, 2)  Next End With End Sub

googooquestion
質問者

お礼

回答ありがとうございます。 例えば、マクロを使わなくても自動的にこのような結果が得られる方法があるのですか?ご存知でしたら教えてください。

回答No.1

「■」を「改行+■」に置換してやれば出来ます。 ※Replace(Cells(1, 1), "■", vbLf & "■", 2) の部分。 ただし、それだけでは先頭1文字が「■」だった場合、先頭に空白行が出来てしまうので、一文字目だけは置換せずにそのままにしておきます。 ※Left(Cells(1, 1), 1) の部分 よって、求める式は以下になります。 Cells(1, 1) = Left(Cells(1, 1), 1) & Replace(Cells(1, 1), "■", vbLf & "■", 2)

googooquestion
質問者

お礼

ありがとうございます。希望通りの結果が得られました。

関連するQ&A

  • エクセルで、「セル内改行」を自動化したいのですが・・・。

    今回もお世話になります。 今回の目的ですが、作業の自動化、 もしくは、簡略化にあります。 例えば、以下の様な文字列の書かれた テキストファイルがあるとします。 あああああああああああ。 ああああ、ああああああ、ああああああああああ。 あああああ、ああああああ。 あああああああああああ。 これをこのまま読み込むと、 一行目:A1 二行目:A2 という感じで読み込まれます。 これ自体は、全然問題ないのですが、 その後に、セル内改行(Alt+Enter)を手作業で入れ、 文章を整えているのですが、非常に時間が掛かります。 これをマクロなどで簡略化できるか 調べているのですが、良い方法が見つかりません。 そこで、テキストエディターで、 セル内改行と解釈してくれる記号を埋め込み、 エクセル側で、セル内改行に変換できないだろうかと、 思いつきました。 次のようなイメージです。 ("\n"を、セル内改行文字と仮定します。) あああああああああああ。 ああああ、\nああああああ、\nああああああああああ。 あああああ、\nああああああ。 あああああああああああ。 これを読み込んだら、"\n"の位置で セル内改行が入ったら便利かと・・・。 このやり方以外でも構いませんので、 何か良い方法は無いのでしょうか!? ちなみに、作成したい数は、 大体50ファイル位です。 テキストファイルを 特定のルールに沿ったエクセルに変える作業です。 PC環境は、 OS:Windows XP Home Edition ソフト:Excel 2000,WZ_EDITOR です。 よろしくお願いします。

  • Excel(エクセル)のセル内の改行がAlt+Enterでできなくなりました。

    いろいろ調べてみたのですがどうしてもわからないので教えてください。 エクセルのセル内の改行をAlt+Enterキーで、この前までは改行できていたのですが、急に使えなくなってしまいました。 Altキーが無効になっているのかと思い、ユーザ補助のキーボードの設定を見てみたのですが、見てもわかりませんでした。 直す方法などを教えてください。 尚、Windows XP Excel2000を使用しています。 よろしくお願い致します。

  • Excelの改行を消すマクロ

    Excel2000です。 セルの中の改行を消したいと思っています。 マクロを使いたいのですが、どうゆう マクロを書けばいいのか教えてください。 東京都 港区 を マクロを使って 東京都港区 にしたいのです。

  • Excel 2016 で一つのセル内で改行したい

    Excel で一つのセル内で改行する方法をお願いいたします 列と行を広くして一つのセル内に複数行記入したいのです 書式設定では 折り返して全体を表示する         縮小して全体を表示する        セルを結合するが有りますが        セル内での改行が有りません 前の文字をスペースで送ると改行らしき事は出来るのですが文字の並びがズレて来るのでよろしくお願いいたします

  • Excelでセル内改行

    お世話になります。 早速ですがExcelで複数のセルに文字列が入力されている時、それらの文字を結合する場合はCONCATENATE関数を使いますよね? で、この応用(なのか判りませんが)で例えばセルA1に"改"の文字が、セルB1には"行"の文字が入っているとき、セルC1に 改 行 と改行させて2行で表示したいのですが、セルC1に"=CONCATENATE(A1,CHAR(13),B1)"とやってもうまくいきませんでした。 Alt+Enterで手入力する以外に関数、マクロ等で何かいい方法がありますか? よろしくお願いします。

  • エクセル、セル内で文字を改行するには?

    エクセルで書類を作っています。セルの書式設定が分からず困っています。少し長い文章を書くとセルを飛び越えてどんどん横に文字が伸びていき、セルの下幅を取っているにもかかわらず,改行してくれません。セルの中で文字が端っこまで行くと勝手に改行してくれる方法を教えていただけませんか? よろしくお願いします。

  • エクセルのマクロで『区切り位置』設定できない

    マクロの素人です。 Win XPでエクセルでセルの中味を区切る設定をしたところ、うまくいきません。 例えば、A列の 経営管理:情報部 をコロンで区切るというマクロを組みます。マクロを実行すると |経営管理|情報部| という結果になります。 しかし、他の値でマクロを実行しても、4文字目で強制的に区切られてしまいます。 セルに何文字入っていようが、「:」でセルを分けたいのですが、マクロの組み方での解決方法を教えてください。

  • Excelでセル内改行する方法

    セル内改行法で、改行記号ごと、他のソフト (notepad)にコピー、ペーストして編集できないものかと考えています。 昔は、A1セルにセルに、 高い山 青い海 と表示させるために、「高い山Alt+ Enterキー青い海」 http://trendy.nikkeibp.co.jp/article/tec/excel/20040310/107753/ と入力する方法を使っていたのですが、一旦A1セルの内容をテキスト(ノートパッド等)にコピーしてから再度A1セルに張り付けると 今度は、A1セルに「高い山」、A2セルに「青い海」と、A1,A2セルにまたがって入力されてしまいます。 さて、社内文書のルール上、Excelのセル内に、下記マクロで記載したようなものを書かなければならないことが多くあります。今、私は、 Sub Macro1() ' Cells(1, 1) = "高い山" & Chr(10) & "青い海" Cells(1, 2) = "" & Chr(10) & "陽気な仲間たちは" & Chr(10) & " -青い山" _ & Chr(10) & " -広い海" _ & Chr(10) & "と共に現れる。" End Sub のように裏で記載しておいて最後にマクロを消して提出してますが…。これも面倒です。 ■本題 願わくば、Excelのfx欄に、 陽気な仲間たちは<br> &nbsp -青い山<br> &nbsp - 広い海 … のように記載しておけば、セル上では、所望の表示が得られているといったことってないのでしょうか?

  • EXCELのセル内改行について

    よくある質問としてExcelの見た目と印刷が違うというものがありますが、それを回避するために、セル内の強制改行を使うと思います。 内部統制のRCMで使っている表なのですが、縦書きの列のセルがあります。同じ行にある横書きのセルの内容が少ないため、セル幅を自動調整しようとすると、行の高さが異常に高くなってしまいます。 縦書きのセルはレイアウト上2行(列)に収める必要があるので、縦書きのセルで強制改行すると、思うように治まるのですが、行のセル幅を自動調整すると、勝手に3行(列)になってしまい、印刷できなくなってしまいます。 どの位置で改行してみても、勝手に1文字分が余分な1行(列)になってしまい、マクロで自動調整をした後に印刷をかけようとしているので、見ばえの悪い表になってしまいます。 (うまく表現できていないようでしたらお許し下さい) 縦書きのセルの自動調整をうまく行う方法は無いでしょうか?

  • エクセル セル内の改行

    エクセル2003を使用しています。 セル内で文字を入力し、任意の場所で改行を行うには、通常「Alt」+「Enter」を使うと思いますが、どうしても次の行(下のセル)に移動してしまいます。 オプション等で設定できるのでしょうか?

専門家に質問してみよう