- ベストアンサー
エクセルで名札を作りたい
エクセルで氏名の一覧表と名札票を同時作成したいと思っています。 ポイントとしては、一覧表に氏名を載せ、それを名札票に自動的に転記させたいのです。 注意点としては、名札票には、氏名転記(フォント;36)して、その後すぐに『さま(フォント;16)』を自動的に差し込むという所です。 『さま』に関しては、同一セルに氏名フォントを-20して、挿入したいです。マクロの設定が必要になると思われますが、どうしてもうまくいきません。 どなたかご教授下さい。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
tankob3210さん、こんにちは。 私も全くの素人なので、たいしたアドバイスはできませんが、tankob3210さんのコードを見て気づいた事を少しだけ。 .Characters(Start:=Len(.Value) , Length:=1) のところは下のようにすれば、"様"を"さま"にしても対応できますね。 .Characters(Start:=Len(.Value) - 1, Length:=2) また、"さま"を加える前に、文字列の長さを変数(x)に保持しておけば、 .Characters(x + 1, .Value-x)とすることで、何文字でも対応できます。 .Font.Size =.Font.Size - 20 のところは、元のフォントサイズが16や20だった場合、 エラーになるので.Font.Size =16のようにした方が良いかと・・・。 シートのBeforeDoubleClickを使うなら、 Cancel=True を入れるとセルが編集状態になりません。 >ダブルクリックしなくても、自動的に反映されるようにしたいです との事ですが、マクロを作動させるためのきっかけは必要ですよね、イベントを使わないならコマンドボタンに登録する等になりますよね。Targetを使えるので、Wクリックはそれなりに良い方法だと思いますけどね。あとは右クリックを使うとか。 >管理上別シートに分けて使用したい これについても、別シートの転記先を特定できれば、可能ですね。 長々と書き連ねましたが、これ以上はシートを拝見してみないと何とも言えませんが、tankob3210さんのやりたい事は、十分実現可能と思います。 頑張ってみて下さい。
その他の回答 (3)
- zenjee
- ベストアンサー率47% (50/106)
質問ですが、名札票の方は「氏名」と「さま」を絶対に同一セルにしなければならない特別な理由があるのでしょうか。 もし名札票を一人分ごとカットして名札として使われるだけなら、間に罫線を入れない限りセルを二つ使っても別に差し支えないと思いますが…………。 私も過去同じような作業をしたことがありますが、マクロなど使わずに次の方法で簡単にやっておりました。 Sheet1のA1~AXに氏名一覧表があったとすると Sheet2のA1に =IF(Sheet1!A1="","",Sheet1!A1) …………Font36ポイント Sheet2のB1に =IF(A1="","","さま") ………………………Font16ポイント と入力しておいて、あとSheet2のA1、B1をプルダウンするだけでSheet1に入力された氏名と「さま」が表示されるので、Sheet2を板目紙にプリントし、あとカッティングして名札として使う。このような方法でやっておりました。 蛇足ですが、入力範囲にはもちろん罫線は一切入れず、板目紙をカットするとき切り目が分かりやすいように、入力セル範囲の直近周囲の行列も印刷範囲に含め、(左右上下の)切り目部分にだけ罫線を入れてプリントし、あとカッターと定規を使ってとでカットしておりました。 もしこのような方法で目的が達せられるとすれば、要点は関数やマクロなどの問題ではなくて、印刷範囲のレイアウト設定にあるような気がしますが……。(見当違いであればごめんなさい)。 ご質問内容の「氏名票」の使途や作業方法が分からないので何とも言えませんが、どうしても氏名と「さま」を同一セルにしなければならない特別な理由がある場合は、表示形式の「@"さま"」ではFontポイント数を変えることは出来ないので、masa_019さんの回答のようにマクロを組むしかないでしょう。
お礼
回答ありがとうございます。 今回は、既存の作業を快適にすることを目的としているので、どうしても根本的な所を変更できません。 そのため、「氏名」と「さま」はなんとか同一セルで出来ないでしょうか?
- masa_019
- ベストアンサー率61% (121/197)
一覧表と名札票はそれぞれ別シートなのでしょうか。 詳細がわからないので、そういう前提で、 一覧表の氏名にさまを加えて名札票に転記、 フォントサイズを設定する部分だけですが、 With Sheets("名札票").Cells(1, 1) .Value = Sheets("一覧").Cells(1, 1).Value & "さま" .Font.Size = 36 .Characters(Len(.Value) - 1, 2).Font.Size = 16 End With ↑のような感じになると思います。
お礼
教えてもらうばかりで申し訳ないので、再度私の方で行いたいことを整理し、希望に近いマクロの例を検索してきました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) 'ダブルクリックで様をつける With Target .Value = .Value & "様" '様をつけて .Characters(Start:=Len(.Value), Length:=1).Font.Size = _ .Font.Size - 20 'セルのフォントサイズより20つ下のサイズ End With End Sub 以上のマクロで、かなりよい感じにはなるのですが、"様" を"さま"に置き換えるとうまくいきません。 また、ダブルクリックしなくても、自動的に反映されるようにしたいです。 最後に、同一シートで試みていましたが、管理上別シートに分けて使用したいので、 masa_019さまの回答して下さった設定を含めたいです。 このような統合されたマクロは作成可能でしょうか? ご教授いただけないでしょうか?
- crystalsnow
- ベストアンサー率33% (115/342)
Wordのソフトが入っているなら、名札はWordの差込み印刷を利用された方がフォントやデザインでの自由度も高くなりますのでご検討されてはいかがでしょうか。 エクセルで作られた一覧表はそのまま使えると思います。
お礼
早速の回答ありがとうございます。 今回に限っては、既存の名札票を利用しなければいけないので、Wordは使用不可なのです。 私もWordを試してみたいと思っているのですが・・・
補足
回答ありがとうございます。 やはりマクロの導入は素人には非常に難しいようです。 毎夜、頑張っておりますが、思ったようになりません。