前提・実現したいこと
結合セルの幅をVBAで取得しようとしています。
やり方はMergeAreaで列の幅を足していけばいいとわかったのですが、
以下の画像のとおり実際の値とあいません。
N21からAA21が結合セルで列幅は画像のとおりです。
合計の33.71をAC列に設定したのですが、結合セルの方が見てわかる通り大きいです。
なぜこのようなことが起きるのでしょうか?
原因と解決策を教えて頂けると幸いです。
よろしくお願い致します。
VBA
1Dim i 2Dim iWidth As Double: iWidth = 0 3 4' 結合セルの幅を取得 5For i = 1 To Range(結合セル).MergeArea.Columns.Count 6 iWidth = iWidth + outputSheet.Range(cell).MergeArea.Item(i).ColumnWidth 7Next
補足情報(FW/ツールのバージョンなど)
Excel 2016
コードを掲載してください。
コード追加しました。
よろしくお願い致します。
outputSheetとcellが突然出てきて良く分かりませんが、「Range(結合セル)」と「outputSheet.Range(cell)」は同じセル(範囲)なのですよね?
すみません。その通りです。
ただ、論点が少しずれた気がするので修正させていただきます。
主に知りたいのは原因です。
最終的にはVBAで実行するのですが、各セルの幅の取得もシート上で操作し取得しました。
原因わかりますでしょうか?
自分のPCで試してみましたが、ほぼ同じ列幅で設定できました。(Excel2013)
結合セルの幅は本当に「33.71」ですか?
>ただ、論点が少しずれた気がするので修正させていただきます。
>主に知りたいのは原因です。
そのためには正確なコードが必要だと思います。回答者側で検証可能なコード(パス以外はそのまま動くようなコード)がないと回答しずらいです。
>自分のPCで試してみましたが、ほぼ同じ列幅で設定できました。(Excel2013)
>結合セルの幅は本当に「33.71」ですか?
本当ですか!?
N21からAA21までのセル幅は画像の通りになっており、AC列は33,71にしてあります。
しかし、結合セルN21には「"123456789012345678901234567890123456789"」が入るのに対し
、AC21には「"123456789012345678901234567890123」までしか入りません。
>そのためには正確なコードが必要だと思います。回答者側で検証可能なコード(パス以外はそのまま動くよ
うなコード)がないと回答しずらいです。
申し訳ありません、浅はかな考えでした。
今回は、幅の問題でVBAがなくとも検証可能なため、コードは必要ないと考えておりました。
・コードに間違いがないことが明確でしたら、microsoftに問い合わせてみてはどうでしょうか?Excelの仕様上の問題かもしれませんね。(以前は問い合わせ用のサイトがありました)
・質問を読んで試したので「セル幅」のことしか確認していません。質問に書いてなかったため、文字が見切れるかどうかについては検証しておりません。

回答1件
あなたの回答
tips
プレビュー