• 締切済み

エクセルの折り返し

Excel2007です。 VBAでセルを結合させて、文字の記入欄を作っていたのですが、 文字が長くなる可能性があるので、 VBA側で結合処理後に折り返しさせる処理を追加して、 折り返しができるようにしたのですが、 いざ、文字を記入してEnterで次のセルへ移動したら、 折り返しが勝手に解除してしまい、1行で表示してしまいます。 何度やっても解除してしまいます。 原因は何でしょうか? また、対処法はどうしたらよいでしょうか?

みんなの回答

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.3

もう一つの方法 折り返しの文字数を定義します http://www.d3.dion.ne.jp/~jkondou/excelvba/K5.htm

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.2

文字列を生成しているのではなくプロパティだけでやっていたのですね ここで説明されているAutoFitを追加してみてください。 http://www.big.or.jp/~seto/vbaref/vbaref5.htm

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.1

エクセルの改行コードは通常と違うのですが、ここも考慮されてますか? http://officetanaka.net/excel/vba/tips/tips89.htm

kunomaki
質問者

補足

考慮してません・・・ちなみにこれがコードです '集計元が格納されているフォルダを選択してもらう Set Shell = CreateObject("Shell.Application") _ .BrowseForFolder(0, "フォルダを選択してください。", 0, ThisWorkbook.Path) If Shell Is Nothing Then FolderPath = "" IsFolderPath = False Else FolderPath = Shell.Items.Item.Path ChDir (FolderPath) IsFolderPath = True End If If (IsFolderPath) Then 'ペースト箇所の行数加算用の変数 Dim row As Integer row = 20 Dim ShareKey As String '検索する文字 Dim NameKey As String '検索する文字 Dim ShareRange As Range '検索されたセル Dim NameRange As Range '検索されたセル Dim NameSheet As String 'シート名を取得する Dim CountX As Integer '列座標 Dim CountY As Integer '行座標 ShareKey = "【満足度】" '検索したい項目名を設定 NameKey = "氏 名" '検索したい項目名を設定 '選択フォルダ内から、順次内容をコピー&ペーストしていく FileName = Dir("*.xls") If FileName = "" Then MsgBox "抽出対象ファイルがありません。" End If Do While FileName <> "" If FileName <> ThisWorkbook.Name Then Workbooks.Open (FileName) '対象項目の検索 Set ShareRange = Cells.Find(What:=ShareKey, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows) Set NameRange = Cells.Find(What:=NameKey, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows) NameSheet = ActiveSheet.Name 'シート名を取得 CountX = 1 '初期値設定 CountY = 0 '初期値設定 If (ShareRange Is Nothing) Then MsgBox "抽出項目が見つかりません" Workbooks(FileName).Close SaveChanges:=False Else '抽出用ファイルへコピー&ペースト Cells(NameRange.row, NameRange.Column + 4).Copy Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B" & row).PasteSpecial Paste:=xlPasteValues Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B" & row).ClearComments '満足度のコピー&ペースト Do While CountY < 5 Do While CountX < 4 Select Case CountX Case 1 Workbooks(FileName).Worksheets(NameSheet).Range("A" & ShareRange.row + CountY + 1).Copy Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B" & row + CountY + 1).PasteSpecial Paste:=xlPasteValues Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B" & row + CountY + 1).ClearComments Case 2 Workbooks(FileName).Worksheets(NameSheet).Range("Q" & ShareRange.row + CountY + 1).Copy Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("C" & row + CountY + 1).PasteSpecial Paste:=xlPasteValues Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("C" & row + CountY + 1).ClearComments Case 3 Workbooks(FileName).Worksheets(NameSheet).Range("U" & ShareRange.row + CountY + 1).Copy Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("E" & row + CountY + 1).PasteSpecial Paste:=xlPasteValues Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("E" & row + CountY + 1).ClearComments End Select CountX = CountX + 1 Loop CountY = CountY + 1 CountX = 1 Loop Workbooks(FileName).Close SaveChanges:=False row = row + CountY + 3 End If End If FileName = Dir() Loop '列の幅の自動調整 Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B25").Columns.AutoFit Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("E21").Columns.AutoFit Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("E22:E100").WrapText = True 'コメント欄生成 Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B" & row).Value = "【コメント記入欄】" 'コメント欄を結合し、文字列配置を上揃えにして、折り返しさせる With Workbooks("抽出用マクロ.xlsm").Worksheets("マクロ").Range("B" & row + 1 & ":" & "E" & row + 7) .MergeCells = True .Borders.LineStyle = xlContinuous .VerticalAlignment = xlTop .NumberFormatLocal = "@" ' 表示形式を文字列にする .WrapText = True ' 文字列を折り返しにする End With MsgBox "完了しました" Application.ScreenUpdating = True Application.DisplayAlerts = True End If

関連するQ&A

  • EXCELのセル内の文字の折り返しがうまくいかない

    EXCEL2003でセル内で文字の折り返しを指定しているなか、 セルの書式設定で文字の折り返しを選んだのに文字が折り返して表示されません。 折り返しにはなっていますが、行の幅が自動で広がりません。 行の高さの指定も特に指定してないとこのことです(人に質問 されています)。 可能な行もあります。 なので何かが行に対して設定されているのだとは思うのですが 原因が思い浮かばないのです。 ただ、列幅をダブルクリックして自動調整を一度行っておけば、 そのあとはその行も折り返しがされ、行高さも自動調整します。 何かが行に設定されているようですが、 何が考えられるでしょうか? よろしくお願いします。

  • エクセル:結合したセルの高さ自動設定

    EXCEL2000で結合したセルの高さ自動設定がききません。 結合したセルは ・文字の配置 横位置:左詰 縦位置:上詰め ・文字の制御 折り返して全体を表示 セルを結合する になっています。 セルを5つ結合して、その結合したセルの横幅を文字列が 越えたら次の行にいって、かつその折り返し部分が見えるように したいんです。 結合していない単体のセルの場合は、折り返され、かつ 折り返し部分が見えるように高さが変わります。 結合したセルでの高さ自動設定はできないのでしょうか? 教えてください。よろしくお願いします。

  • Excel 結合について

    Excel2000を使用しています。 データが入っているシートがあります。 ある1つの列について、下の行を見て、次の文字があるところまで、次々とセルの結合を行いたいのですが、VBAを教えてください。 よろしくお願いいたします。

  • Excelのセル内での文字の勝手な折り返しをやめた

    こんにちは、不思議な現象が出ていて、悩んでいます。 どなたか同じ現象になった方はおられますか? セル内に大量の文字(900文字程度)が入っています。 セルの文字の折り返しにチェックが入っています。 そのような状況の中で、規則性のない行で改行されてしまいます。 +----------------------------------------+ |あああああああああああああああああああああ| |あああああああああああああああああああああ| |あああああああああ                |←途中で行が変わってしまいます。 |あああああああああああああああああああああ| |ああああああああああああああああああ    | |あああああああああああああああああああああ| +----------------------------------------+ 3行目の語尾に改行コードは入っていません。 メモ帳などへ上記の内容を貼り付けて確認しても、改行コードは含まれておりません。 自分が望んでいる結果は以下のような感じで、Excelの自動折り返しのみで そのまま表示したいです。 +----------------------------------------+ |あああああああああああああああああああああ| |あああああああああああああああああああああ| |あああああああああああああああああああああ| |あああああああああああああああああああああ| |あああああああああああああああああああああ| |あああああああああああああああああああああ| +----------------------------------------+ 使用している PC は XP で、Excel は 2007 を使用しております。 何かExcelの制限があるのでしょうか? よろしくお願いします。

  • エクセル操作で教えてほしいことがあります。

    複数セルを結合した行が沢山あり、その行を移動させると、 すべての行の結合が解除されてしまいます。 たとえば、B・C・Dの列を結合した行が1行目から10行目まであり、 2行目から10行目までを移動させるとすると、 2行目から10行目までのB・C・Dの列が結合が解除されてしまいます。 移動しても結合が解除されないようにするには、どうすればいいのでしょうか? エクセル2002を使っています。 教えて下さい。

  • セルの折り返しについて

    WindowsXPでMicrosoft Office Excel2003を使用しています。セルの書式設定で「折り返し」を選択して入力すると、自動的に行が文字数にあわせて広くなる場合とならない場合があります。いつも自動的に広くなるようにするにはどうしたら良いか教えて下さい。

  • エクセルのセル内で改行した場合の行数および行ごとの文字数?

    エクセル2000です。 セルをいくつか結合させ、その中にAlt+Enterで改行した文字列があります。 全部で何行あり、各行は何文字かを調べる関数またはVBAはありますか?

  • Excelの結合について

    Excel2010で結合されていない台帳から結合されている台帳へ貼り付けるには、どうしたらよろしいのでしょうか? 文字数が多くセルに表示がされないので、結合することいたしました。 文字の色も反映させて張り付けしたいです。 (例) コピー元は全て結合されていなく、「6行・13行・22行」を結合されているセルに貼り付けたい。 それ以外の行も結合なしで貼り付ける。 コピー先は「6行と7行・14行と15行・24行と25行」と結合すると行がズレるので結合されているセルに貼り付けたい。 セルの行幅を広げるのに限界があり現状セルの結合しかないのですが、文字を小さくしないで表示させる方法が他にもあれば、セルの結合に拘りません。 よろしくお願いします。

  • エクセルの一セル折り返しの印字表示について

    エクセルの一セル折り返しの印字表示についてお教えください。 エクセルの一セルに折り返しで大量に文字を打ち込んでいき、さて印刷してみようとすると、セルの下のほうに、数行かならず隠れてしまうんです。せっかく折り返しが自動で、画面上は表示されているのに、プリントアウトするときに、文字が隠れて、微調整が必要だとするのは非常に残念。 画面同様に、印刷においても、折り返しの文字が自動で印字されるような設定は、エクセルには不可能なのでしょうか。 どなたか、お詳しい方、改善の方法がありましたら、お教えください。

  • エクセルの使い方

    ・複数行を横に複数列ドラッグして、縦にだけセルを結合する方法 ・セル内で文字の変換後に左を押すとセルが移動してしまい、カーソルが動かない。どうすればこのようなことは起こらないか ・セル内でAlt+Enterで改行したら、こちらの望まないところで勝手に改行された。一旦、中の文字を全て消しても、そのセルでは勝手に改行は継続される。このようなことが起こらないようにするにはどうするのか。

専門家に質問してみよう