Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7238 / 13644 ツリー ←次へ | 前へ→

【40166】セルに表示されている文字数 いなば 06/7/7(金) 17:43 質問[未読]
【40167】Re:セルに表示されている文字数 ぱっせんじゃー 06/7/7(金) 17:52 発言[未読]
【40170】Re:セルに表示されている文字数 いなば 06/7/7(金) 18:16 質問[未読]
【40173】Re:セルに表示されている文字数 AME 06/7/7(金) 19:10 発言[未読]
【40181】Re:セルに表示されている文字数 いなば 06/7/7(金) 23:01 お礼[未読]
【40190】Re:セルに表示されている文字数 AME 06/7/8(土) 8:11 発言[未読]
【40364】Re:セルに表示されている文字数 momo 06/7/12(水) 15:40 発言[未読]
【40381】Re:セルに表示されている文字数 漂流民 06/7/12(水) 22:57 発言[未読]

【40166】セルに表示されている文字数
質問  いなば  - 06/7/7(金) 17:43 -

引用なし
パスワード
   一つのセルに表示されている文字の数を調べたいのですがどうしたよろしいでしょうか?

セルの幅12
セルの高さ11.25
文字の大きさ9ポイント
フォント MS Pゴシック
その他文字の装飾なし

この条件の場合、あ という文字を打つと、セルに9文字分入ります。
もちろん、セルの値としては9文字分以上入力できることは分かっています。
もしくは、右隣のセルが空白なら隣のセルにまではみ出して表示されることも分かっています。

一つのセルに限定して、何文字表示されているか。もしくは、現在表示されているのはセルの値のどの部分なのか?というのが分かればと思っています。

セルには全角文字、半角文字が混在して入力されています。

【40167】Re:セルに表示されている文字数
発言  ぱっせんじゃー  - 06/7/7(金) 17:52 -

引用なし
パスワード
   VBAヘルプで
Len関数
をご参照ください。

【40170】Re:セルに表示されている文字数
質問  いなば  - 06/7/7(金) 18:16 -

引用なし
パスワード
   ぱっせんじゃーさん ありがとうございます。

Len関数について調べました。
「指定された文字列の文字数、または変数の格納に必要な名目上のバイト数を含む整数型の値を返します。」

たとえば、セルA1に入力されている値の文字数を調べるにはLen関数を用いれば良いということですよね。

申し訳ありません。

仮に、A1に「ああああああああああああああああああああ」と入力されていて、
セル幅 12
セルの高さ 11.25
文字の大きさ 9ポイント
フォント MSPゴシック
B1セルには他の文字列の入力あり。

このような場合、A1には「あ」が20個入力されていますが、実際にセルに表示される(数式バーではなく、セルに見えるもの)のは「あ」が9つとなりました。
この「あ」が9つというのを知りたいと思っています。

分かりにくい質問の仕方で申し訳ありません。

【40173】Re:セルに表示されている文字数
発言  AME  - 06/7/7(金) 19:10 -

引用なし
パスワード
   ▼いなば さん:

>仮に、A1に「ああああああああああああああああああああ」と入力されていて、
>セル幅 12
>セルの高さ 11.25
>文字の大きさ 9ポイント
>フォント MSPゴシック
>B1セルには他の文字列の入力あり。
>
>このような場合、A1には「あ」が20個入力されていますが、実際にセルに表示される(数式バーではなく、セルに見えるもの)のは「あ」が9つとなりました。
>この「あ」が9つというのを知りたいと思っています。

B1のセルに何か文字が入っているからです。Jump(F5)で確認してください。

エクセルでは、幅と高さでは単位が違います。
普通、エクセルを開くと、幅8.38とでますが・・・これは、標準フォントの半角文字で
何文字かを現しています。例えば、「2」という文字を入れると、8.38個分まで
マスに入るということです。そしてそれがピクセルに直すと72(1ピクセルは
0.2625mm)ピクセルと言うことです。
エクセルは単位がポイント、ピクセル、文字数がごっちゃに使われています。
じっくりこの辺を理解された方が良いかも知れませんね。
因みに高さはポイント(0.35mm位)です。

【40181】Re:セルに表示されている文字数
お礼  いなば  - 06/7/7(金) 23:01 -

引用なし
パスワード
   AMEさん ありがとうございます。

>幅8.38とでますが・・・これは、標準フォントの半角文字で
>何文字かを現しています。例えば、「2」という文字を入れると、8.38個分まで
マスに入るということです。

半角文字で、「2」が8.38個 「i」の場合はセルにいくつ入るでしょうか?
私のパソコンだけでしょうか?
一つのセルに列幅を変更することなく17〜18個くらい入って見えます。
文字によって、セルに見える文字数が違うような気がします。

印刷するシートがあり、あるセルにデータを入れるのですが、しばしばデータ(文字列)が長く、セルに収まりきらないことがあります(表示しきらない)。
印刷シートでレイアウトは作成済みのため、列幅や高さをオートフィットなどで変更すると印刷のページがずれたりして不都合が生じ、
セルに表示されている文字数をオーバーしていれば、ポイントを落として文字の大きさを変更しようと考えて、今回のような質問に至りました。

セルに表示という表現が拙かったと思います。
目で見えるとかいう表現のほうが良かったのでしょうか?

とりあえず、解決はしていませんが別の方法を考えたいと思います。
お騒がせして申し訳ありませんでした。

【40190】Re:セルに表示されている文字数
発言  AME  - 06/7/8(土) 8:11 -

引用なし
パスワード
   ▼いなば さん:
>AMEさん ありがとうございます。
>
>>幅8.38とでますが・・・これは、標準フォントの半角文字で
>>何文字かを現しています。例えば、「2」という文字を入れると、8.38個分まで
>マスに入るということです。
>
>半角文字で、「2」が8.38個 「i」の場合はセルにいくつ入るでしょうか?
>私のパソコンだけでしょうか?
>一つのセルに列幅を変更することなく17〜18個くらい入って見えます。
>文字によって、セルに見える文字数が違うような気がします。

これは文字フォントの性格です。美しいフォントは前後の文字によって文字間隔までが異なるように制作されています。
標準の半角と書きましたが、数字の2がチェック用に利用しやすい文字です。
jやlは問題外です。ましてやプロポーショナルフォントも対象から外して考えた方が良いでしょう。

いずれにしても、エルセルは印刷の云々の問題になるとかなり辛いですね。元々表計算からスタートしていますから・・・
でも次期2007オフィスはこの当たりが少しは改善されているようです。印刷プレビュー以外にそれに近い画面が出せ、文字変更やセルの中身を変えながら、プレビュー的なことも出来るようです。期待したいものです。

>
>印刷するシートがあり、あるセルにデータを入れるのですが、しばしばデータ(文字列)が長く、セルに収まりきらないことがあります(表示しきらない)。
>印刷シートでレイアウトは作成済みのため、列幅や高さをオートフィットなどで変更すると印刷のページがずれたりして不都合が生じ、
>セルに表示されている文字数をオーバーしていれば、ポイントを落として文字の大きさを変更しようと考えて、今回のような質問に至りました。
>
>セルに表示という表現が拙かったと思います。
>目で見えるとかいう表現のほうが良かったのでしょうか?
>
>とりあえず、解決はしていませんが別の方法を考えたいと思います。
>お騒がせして申し訳ありませんでした。

【40364】Re:セルに表示されている文字数
発言  momo  - 06/7/12(水) 15:40 -

引用なし
パスワード
   いなば さん:

 いなばさんのご質問、私も同じ状況でいき詰まっておりました。
 きれいにレイアウトができるのを一番の強みに思っていたのですが。。
 私の場合は、報告書のデータベースのようなものを現在作成しているのですが、
 任意のデータを呼び出して、報告書を印字できるようにしたかったのです。
 報告内容は、数行のものから数ページに渡るものまで、さまざまですが、
 文字ごとで、横幅が違うので、「いったい、何文字目で改行されるのか」がまったくわかりません。
 AMEさんの言われるように、新バージョンに期待するほかないのでしょうか?
 
 ちなみに、やりたいこととは程遠いのですが、次のようなコードも組んでみましたが、結果は、「見にくい!」のひと言。

Sub 各セルに割り当てる()

bunsho = "なが〜〜い文字数の文章(最大A4で4ページほど)"

CR = Chr(10)
rw = 1
clm = 1
clmMax = 30

For i = 1 To Len(bunsho)
moji = Mid(bunsho, i, 1)
If moji = CR Then
 rw = rw + 1: clm = 1
 Else
 Sheets("1").Cells(rw, clm).Value = moji
 clm = clm + 1
 If clm > clmMax Then
  rw = rw + 1: clm = 1
 End If
End If
Next

End Sub

【40381】Re:セルに表示されている文字数
発言  漂流民  - 06/7/12(水) 22:57 -

引用なし
パスワード
   ▼いなば さん:

>印刷するシートがあり、あるセルにデータを入れるのですが、しばしばデータ(文字列)が長く、セルに収まりきらないことがあります(表示しきらない)。
>印刷シートでレイアウトは作成済みのため、列幅や高さをオートフィットなどで変更すると印刷のページがずれたりして不都合が生じ、
>セルに表示されている文字数をオーバーしていれば、ポイントを落として文字の大きさを変更しようと考えて、今回のような質問に至りました。

Sub test()
  Cells.ShrinkToFit = True
End Sub

失礼しました~~;

7238 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free