- ベストアンサー
EXCELでセルに入れる文字数の制限
文章が入力されてるエクセルデータがあります。 セルに入る文字数を常に一定にしてプリントアウトしたいです。 (Wordだと一行何文字と指定できるとおもうのですが) もう出来上っているエクセルデータから、セルに入れる文字を制限数までとし、それを超えたら自動的に消される方法はありますか? マクロを張り込まないとできないのでしょうか? 私はマクロのプログラムが全く書けないのでそれができません。 どうしたらよいでしょうか? 使う方が初心者なので、出来るだけその人が手をかけないようプログラムを作るか、設定したいのですが・・ ちなみにエクセルの機能で、入力規則はもう出来上ってるデータには適用されないようなので、それ以外でお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
出来上がっているシートだと入力規則も使ってもしようがない。 印刷用のシートに一端コピーし、指定した範囲の全セルをチェックし、制限文字数を超えた部分はカットしカットした文字列を隠せるに 戻す。こういうのをVBAでプログラムを作る。 >使う方が初心者なので、 VBAで上記のことをするときは、使う方が初心者とかは関係ないでしょう。ただ普通の印刷をされたら、全部文字印刷されるから、印刷ボタンでもシートに作って、こちらをクリックしてよ、というのは徹底しないとならない。 標準モジュールに Sub test01() Application.DisplayAlerts = False Worksheets("仮シート").Delete Dim cl maxms = 10 Dim ws As Worksheet Set kari = ActiveWorkbook.Worksheets.Add kari.Name = "仮シート" Worksheets("Sheet1").UsedRange.Copy Worksheets("仮シート").Range("A1").PasteSpecial Paste:=xlPasteAll Application.CutCopyMode = False For Each cl In Worksheets("仮シート").Range("A1:H100") If Len(cl) > maxms Then cl.Value = Left(cl, maxms) End If Next ActiveSheet.Range("A1:H100").PrintOut 'Worksheets("仮シート").Delete Application.DisplayAlerts = False End Sub 原型的なイメージだけの内容のもの。 maxms = 10 上記では文字数10文字 Range("A1:H100"). 対象範囲A1:H100 は自分の場合に合わせて変更必要。 ボタンクリック起動にはしてない。 上記のコードなどに対し、>プログラムが全く書けないのでそれができません、であれば、自分の思うように改善するのは難しいでしょう。
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
入力規則に、まさにそのための機能が用意されていますが、それ以外の方法ということですが、適用できるようにしてはいかがでしょうか? (1)別シートを用意して、各セルに指定文字分だけコピーするよう設定 =LEFT(シートA!A1,10) などでオートフィル(←は10文字の例) (2)全体をコピーして、形式を選択して貼り付け-値 (これで、元のシートの指定文字分だけのコピーになる) (3)ここで全体に、入力規則をかける。 あくまで、入力規則の機能を利用したくないというのであれば、VBAで自作すれば可能です。
お礼
お返事遅くなって申し訳ございません。 ありがとうございます。 実は、私が使うのではなく、パソコンをあまり知らない方が使うので 出来るか分かりませんが、自分で試してみて教えようかと思ってます。 ありがとうございました。
お礼
お返事遅くなって申し訳ございません。 えっと、補足ですが、「プログラムが全く書けないのでそれができません」というのは私の説明不足でした。すみません。 正確にいうと、プログラムは多少勉強したことあるのですが、こういう プログラムは作れない、という事です。 だけど、プログラムはほとんど分からないので、imogasiさんの回答を参考に試してみたいと思います。 細かくプログラム書いていただいてありがとうございました。