エクセル2007のマクロで行の高さをコントロールする方法

このQ&Aのポイント
  • エクセル2007を使用して長文入力する際に、行の高さを自動調整する方法やショートカットキーで行の高さを調整する方法を教えてください。
  • 知人が組んでくれたマクロで行の高さを調整できたのですが、連絡が取れなくなりソースも手元にありません。どのようなマクロを組めば行の高さをコントロールすることができるのでしょうか?
  • エクセルのマクロやVBAに関するWebサイトを探してみましたが、自分がやりたいことに合致する情報が見つかりませんでした。行の高さを自動調整する方法やショートカットキーで調整するマクロの作り方を教えていただけますか?
回答を見る
  • ベストアンサー

EXEL2007のマクロで、行の高さをコントロール

文章を書く仕事をしているのですが、エクセルのテンプレートに長文入力する作業が多いです。 使用しているのはウインドウズ7 エクセル2007です。 さて、エクセルは特定のセルに長文を入力していると、入力中は全文章が表示されていますが、セルを非アクティヴにした瞬間に行の高さ以降の文章が表示されなくなってしまいます。 そこで、「セル内に入力された文字がすべて表示されるよう、行の高さを自動調整する」 もしくは、「ショートカットキーでアクティヴセルを含む行の高さを何ピクセルか単位で高くしたり低くしたりできるようにする」 といった機能が欲しいと考えています。ショートカットキーをカンカン叩くたびに指定行の高さが少しずつ増えたり減ったりするイメージです。 実は、二番目の機能はある知人が一度マクロを組んでくれたのですが、その知人と連絡が とれなくなって、ソース自体も手許に残っていません。 たぶんネックは、「アクティヴセル自体の行幅を変えること自体は難しくないのだが、文字編集モードからいったんセル選択モードに切り替えなくてはセルの行の高さのコントロールができない」という点で、知人はたしか「いったん別のセルにジャンプすることで、文字編集モードからセル選択モードに切り替え、その後に元のセルをアクティヴにする」というやり方をしていたと思います。 しかし実際はなかなか制約が多く、うまく動作しないことの多いマクロでした。 エクセルのマクロやVBAに関するWebサイトは多いのですが、「自分がドンピシャでやりたいこと」ってなかなかみつからないものですね…。 というわけで、上記のようなことができるとしたら、どのようなマクロを組めばよいのか、 教えていただけると幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>「セル内に入力された文字がすべて表示されるよう、行の高さを自動調整する」 シートモジュールに Private Sub Worksheet_Change(ByVal Target As Range)   Target.EntireRow.AutoFit End Sub >「ショートカットキーでアクティヴセルを含む行の高さを何ピクセルか単位で高くしたり低くしたりできるようにする」 Sub ショートカットキー登録()   '[Ctrl]キー+[u]キーにマクロ【行高UP】を登録   Application.MacroOptions Macro:="行高UP", ShortcutKey:="u"   '[Ctrl]キー+[d]キーにマクロ【行高Down】を登録   Application.MacroOptions Macro:="行高Down", ShortcutKey:="d" End Sub Sub 行高UP()   With ActiveCell     .RowHeight = .RowHeight + 0.25   End With End Sub Sub 行高Down()   With ActiveCell     .RowHeight = .RowHeight - 0.25   End With End Sub

y_hisakata
質問者

お礼

ありがとうございます。とりあえず、 >「ショートカットキーでアクティヴセルを含む行の高さを何ピクセルか単位で高くしたり低くしたりできるようにする」 については動作確認できました。 さて、このマクロで、確かにセルの行の高さはコントロールできるようになったのですが、 もうひとつの問題点であるところの、「セル内に文字を入力中に、(つまりカーソルがI状に 点滅している状態の時に)ショートカットが効かない」という問題が残っています。 これについては、どのように対処すればよろしいでしょうか?  「いったん文字入力モードを脱出してセル選択した状態にしなければ、ショートカットは適用 できない」ということなのでしょうか?それとも何らかの対処策があるのでしょうか。

関連するQ&A

  • 結合セルでの行の高さの自動調整

    エクセルでの質問です。 結合セルに折り返して表示の設定がしてあり、文章が入力されています。入力方法が統一されていないため、セルによって、一行だったり、長文だったり、セル内で改行して箇条書きで入力されていたりします。 文章の下が切れてしまうセルがあるので、手作業で行の高さを広げています。行数が何百行もあったりするのでとても手間と時間がかかってしまいます。いい方法がないかと、“マクロでセル内の文字数が50以上なら行の高さを30にする”としてみたのですが、箇条書きのセルだとうまくいきません。そこで、“セル内に3行以上なら、行の高さを30 とする”というように行数を数えることは可能でしょうか? また、他に良い方法があれば教えてください。宜しくお願いします。

  • マクロでの行選択

    Excelのマクロについて質問です。 例えば、A1~A5セルをセル結合したときに、3行目~5行目を行選択 しようとしたときに手動で行なうとうまく選択できるのですが、マクロ で実行するとなぜか結合されている1行目から5行目が選択されて しまいます。 具体的に以下のようなマクロを書きました。 Rows.("3:5").select 手動のみでマクロ化は無理なのでしょうか? 今のままですと、一回連結をといてセルを選択して処理を実行、その のちにセルを再び連結させるということをやらなければいけなくなって しまいます。

  • エクセル マクロで行の表示・非表示

    エクセルでマクロを使用し、行の表示・非表示をしたいと 考えております。 たとえば、1~50行目まで文字が入力されているシートがあり、 あるボタンを押すと10~20行目だけ 表示されるといったことがしたいのですが、 どのようにしたらよいかどなたかおしえていただけないでしょうか? よろしくお願いします。

  • エクセルマクロの行非表示及び挿入

    エクセルマクロの方法について質問です。 今6~70行の中に表(入力項目は3行一体)を作っていてそのEセル(3行の結合セル)に”済”と入力すると3行で一体の行を非表示にし、非表示にしたことで入力行が減ってしまうので、非表示にした後に最後から2つ目の3行一体の行にコピーして行を挿入する構文を教えてください。 なお、最後の行挿入だけはマクロの自動記憶でも出来そうでしたが、その前段階の非表示がどうしてもうまくいきません。

  • マクロでActivecellの1行下に移動したい

    EXCELのマクロで、あるセルにデータを入力した後、マクロボタンで1行下のセルをアクティブセルにしたいのですが、どう記述したらいいでしょうか?

  • マクロで行挿入がうまくいかない理由は?

    XPでOFFICE2007です。マクロ未熟者です。 マクロで、行挿入だけであればうまくいきますが、行挿入した後でその行に文字を入力するマクロでは、その行ではなく1行前のセルに文字が入力されてしまいます。 変なことになるのは、マクロを作成する過程で、行挿入が上の書式をコピーすることと関連がありそうなのですが、何に注意すればうまくいくのでしょう。 とりあえず今のところは行挿入を使わずに上の行をコピーして挿入する方法でうまくいっています。しかし行挿入後の文字入力がうまくいかないのか、その理由と対処方法がわかれば教えてください

  • 関数による空白行を除き範囲を選択するマクロ

    添付ファイルのシートが同じファイル内にある別シートの値を参照の上、元シートの入力がない場合は、if関数により空白表示する様にしてあります。(関数自体は1万行くらいまで入力すみです。) このシートの空白表示以外のセル(A6:i22)までを選択するマクロを組みたいのですが普通のrange(A6:i6).End(xlDown).Rowを使うと空白表示行を含めた関数のある最終行を選択してしまいます。 サンプルの(A6:i22)をうまく選択するマクロを教えてください。

  • エクセル マクロ 行 非表示

    マクロについてご教授お願い出来ないでしょうか。 マクロ初心者です。 エクセル アクティブセル(ex A120セルやA20セル)の行から1行目までを非表示にさせるマクロがわかりません。 アクティブセルから下の行を非表示にさせるマクロは下記URLにて紹介がありましたが・・ https://www.relief.jp/docs/excel-vba-hide-below-active-cell.html また、もし可能でしたら、アクティブセルからA2行目までの非表示、つまり 1行目は残すマクロが可能でしたら、合わせてご教授どうぞよろしくお願い致します。 

  • ExcelでのVBAマクロについて

    質問させていただきます。 今現在、知人に設定していただいた一つのマクロを使って作業しています。 (そのマクロ自体は【選択したセル】と【直下のセル】のデータを「テキスト」として『前後のスペース』を削除し「セル内改行」で結合する。高さ調整後、1セル分上がる。というものです) 今までは1セルずつこれを使って結合し、セル内文章をまとめて一番上に持ち上げていました。しかし、今回私がやりたいのは1セルずつマクロを実行(ショートカットキーを使っていますが)するのが手間なので、5セル(上下方向にです)に対して一気に先ほどの既存マクロを適応する、という風にしたいのです。(選択セルと直下セルが結合されて選択セル内文章が増えるというやり方ですので、一番初めのポインタ位置は結合したいデータの下から二つ目でないといけません。その場合、この既存マクロを4回繰り返すマクロがほしいのです) 私自身、「記録」機能を使ったマクロしか組んだことがなかったのでVBAのほうをいじってみても知識不足でエラーばかり出てしまい、困ってしまいました。 とても説明がややこしく、分かりづらいとは思いますが、ご回答いただけると有り難いです。

  • エクセルセル内の文字の連結マクロ

    例えばエクセルシート内のA列の1~8行目までに文字が入力してあるとします。 そこで、例えばA1のセルからA8のセルを選択したまま(アクティブにしたまま)で、マクロを実行して、A9のセルにA1~A8の文字を連結した文字列を書くということはできますか?

専門家に質問してみよう