Excel2000です。
ワークシート、 Sheets("Comment")上のデータにもとづき、自動でセルにコメントを挿入するマクロを書きました。
以下で、正常に作動します。
問題は、TextFrameの自動サイズ調整の部分です。
このままだと、文字列の長さに応じて横にだけ長くなってしまうのです。
かといって、文字列の長さはバラバラなのでサイズを固定するわけにもいきません。
コメントの横幅は一定で、縦の長さだけ文字数に応じて自動で変わるような設定はできないものでしょうか?
Sheets("Comment")上のデータをAlt+Enterでセル内改行させることにより対応はできますが、もっといい方法がないか質問させていただきました。
Lenで文字数を調べ、これに応じて対応させるのは、全角半角が入り混じったデータなので無理そうです。
宜しくお願い申し上げます。
Sub Comment挿入()
Dim sa As String, ad As String, tx As String
With Sheets("Comment")
For i = 2 To 42
sn = .Cells(i, "A").Value 'シート名
ad = .Cells(i, "B").Value 'セルアドレス
tx = .Cells(i, "C").Value 'テキスト
With Sheets(sn).Range(ad)
.AddComment
With .Comment
.Visible = False
.Text Text:=tx
.Shape.Shadow.Visible = msoFalse '影無し
.Shape.Fill.ForeColor.SchemeColor = 42 '背景を水色
.Shape.Line.ForeColor.SchemeColor = 10 '枠線を赤
.Shape.TextFrame.Characters.Font.Name = "MS UI Gothic" 'フォント指定
.Shape.TextFrame.Characters.Font.ColorIndex = 3 'フォント色を赤
.Shape.TextFrame.AutoSize = True '自動サイズ調整
End With
End With
Next i
End With
End Sub
No.2ベストアンサー
- 回答日時:
私も思いつきで。
(アイデアのみですが)セルにコメント用テキストが入力してあるなら、
セル幅を固定したいコメント幅にしておいて、セルの行高自動調整を使ってみてはどうでしょう。
セルの設定を.WrapText = True にして
.Rows.AutoFitメソッドを使って自動設定される .Height にコメントの .Height を合わせるわけです。
(Font種別やサイズなどを合わせる必要がありますし、セルのHeightの最大値が409.5なので文字数が多い場合は困りますけど)
必要ならセル側の設定を戻す処理を行ったり、作業用のダミーシートを使ったりすると良いかもしれません。
この回答への補足
すみません、お礼でサイズが小さいと書きましたが、わたしのコードの誤りでした。
修正したらうまくいきました。
大変失礼いたしました。
ありがとうございます。
ありがとうございます。これはGood Ideaだと思い試してみました。
セル内で折り返して表示させ、行高を自動設定させて
hg = .Cells(i, "C").Height 'セル高
wd = .Cells(i, "C").Width 'セル幅 として取得した数値でコメントのサイズを設定させました。
残念ながら、エクセルのワークシートのセル内文字の見かけ上の配置と実際にプリントしたときの配置が違うせいなのか、サイズが不足してしまいます。
No.3
- 回答日時:
Sub Comment挿入()
Dim sa, sn, ad, tx As String
Dim 開始位置, 壱行文字数, 文字数 As Integer
Dim 作業文字列 As String
壱行文字数 = 15 'ここで1行の文字数を設定
With Sheets("Comment")
For i = 2 To 42
sn = .Cells(i, "A").Value 'シート名
ad = .Cells(i, "B").Value 'セルアドレス
tx = .Cells(i, "C").Value 'テキスト
作業文字列 = StrConv(tx, vbWide)
文字数 = Len(作業文字列)
For 開始位置 = 1 To 文字数 Step 壱行文字数
If 開始位置 = 1 Then
tx = Mid(作業文字列, 開始位置, 壱行文字数)
Else
tx = tx & vbLf & Mid(作業文字列, 開始位置, 壱行文字数)
End If
Next 開始位置
With Sheets(sn).Range(ad)
.AddComment
With .Comment
.Visible = False
.Text Text:=tx
.Shape.Shadow.Visible = msoFalse '影無し
.Shape.Fill.ForeColor.SchemeColor = 42 '背景を水色
.Shape.Line.ForeColor.SchemeColor = 10 '枠線を赤
.Shape.TextFrame.Characters.Font.Name = "MS ゴシック" '等倍フォントへ変更
.Shape.TextFrame.Characters.Font.ColorIndex = 3 'フォント色を赤
.Shape.TextFrame.AutoSize = True '自動サイズ調整
End With
End With
Next i
End With
End Sub
横幅を合わせるには
文字をすべて半角か全角に統一し、尚且つ等倍フォントを使用しなければ無理だと思います
文字数によっては半角のずれが生じるため
ありがとうございます。
これもうまくいきました。ただ、出来ることならコメントの全角半角混在の設定は変えたくないのです。
でもとても勉強になりました。
No.1
- 回答日時:
思い付きのアイデアレベルなので、きちんとテストはしていませんが…
『一度autoで作成してから、同じ面積になるようにwidth固定で幅、高さを再設定する』というのではいかがでしょうか?
(実際には、繰上げ計算しているので、安全側の大きめになるはずです)
簡単な試行をして見た限りでは、まぁ、許容範囲かと…
<widthを100に固定した場合の例>
.Shape.TextFrame.AutoSize = True '自動サイズ調整
の後に以下の2行を追加。
.Shape.Height = Fix(.Shape.Width / 100 + 1) * .Shape.Height
.Shape.Width = 100
元の文章には改行がないと仮定していますが、文章が長くなってくると↑の安全側の評価が累積して余白が大きくなってきますね。
(単純にHeightの倍数を取るとmarginの分を余分に拡大しているかも)
例えば、少し改善するにはHeightの設定を
.Shape.Height = Fix(.Shape.Width / 100 + 1) * (.Shape.Height - .Shape.TextFrame.MarginTop) + .Shape.TextFrame.MarginTop
としてやるとか…
(MarginBottomも同様に扱うと、今度は行数が少ない時に高さ不足して、文字が入りきらなくなってしまうみたい)
幅と高さの計算式は、まだ改善の余地がありそうですが、とりあえずは、ひとつのアイデアの提供ということで…
ありがとうございます。
等幅フォントに変更し
.Shape.Height = Fix(.Shape.Width / 100 + 1) * .Shape.Height
.Shape.Width = 100
でうまくいきました。たしかに文章が長くなってくると余白が大きくなってきますが実用上問題はないです。
助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
3分あったら何をしますか?
カップ麺にお湯を入れて、できるまでの3分間で皆さんは何をしていますか?
-
【お題】マッチョ習字
【大喜利】 「精神を鍛えるため」にと、ジムから書初めの宿題を出されたマッチョたちが半紙に書いてきたこと
-
集合写真、どこに映る?
あなたが集合写真を撮られるとき、画角のどのあたりにいることが多いですか? 私は振り返ってみると右の端にいることが多い気がします。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
エクセルで複数のコメントのサイズ(形)を一括で変える方法
Excel(エクセル)
-
Excel2003 の『コメント』の編集位置が、あらぬ位置に勝手に移動してしまう件で教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
エクセルで特定の列のセルだけ...
-
エクセルの入力規則プルダウン...
-
エクセルでセルを上下に結合し...
-
Excel countif関数で取り消し線...
-
エクセル2013で英単語を折り返...
-
セルは大きくさせず、中の文字...
-
Excelでcsvやtxtで保存する時に...
-
エクセル 折り返して全体を表...
-
マウスポインターが白十字のまま
-
エクセルファイルに _x000D_ と...
-
エクセルで1つのセルにスクロ...
-
エクセルでカーソルが合わない
-
セル内の一部の文字だけをハイ...
-
エクセルにサムネイル画像組み込み
-
Excelの複数のセルをひとつのセ...
-
エクセルで半角漢字
-
エクセルにおいてセル内の文字...
-
Excel2013 文字入力時にセルの...
-
エクセルのセル外改行は可能で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
Excel countif関数で取り消し線...
-
セル内の一部の文字だけをハイ...
-
エクセルで1つのセルにスクロ...
-
エクセルファイルに _x000D_ と...
-
エクセルでセルを上下に結合し...
-
Excelでcsvやtxtで保存する時に...
-
エクセル2013で英単語を折り返...
-
エクセルの入力規則プルダウン...
-
エクセルの白黒の反転で困って...
-
全セルの末尾に改行(Alt+Enter...
-
CSVファイルでテキストの改行の...
-
セルは大きくさせず、中の文字...
-
セルを結合しても、文字をセル...
-
マウスポインターが白十字のまま
-
Excel入力で勝手にエンター押さ...
-
エクセルでセルの中の色分け
-
エクセルで文字を打つと下に、...
-
JIS水準漢字の選別方法教えてく...
-
エクセルで特定の列のセルだけ...
おすすめ情報