Excel VBA質問箱 IV

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

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


939 / 13645 ツリー ←次へ | 前へ→

【77393】テキストボックスのスクロールバー tomi 15/9/8(火) 16:19 質問[未読]
【77394】Re:テキストボックスのスクロールバー カリーニン 15/9/8(火) 19:25 発言[未読]
【77395】Re:テキストボックスのスクロールバー tomi 15/9/8(火) 19:45 発言[未読]
【77396】Re:テキストボックスのスクロールバー カリーニン 15/9/8(火) 20:02 発言[未読]
【77397】Re:テキストボックスのスクロールバー tomi 15/9/8(火) 20:32 発言[未読]
【77398】Re:テキストボックスのスクロールバー カリーニン 15/9/8(火) 20:39 発言[未読]
【77400】Re:テキストボックスのスクロールバー tomi 15/9/9(水) 5:00 お礼[未読]
【77399】Re:テキストボックスのスクロールバー マナ 15/9/8(火) 20:50 発言[未読]
【77401】Re:テキストボックスのスクロールバー tomi 15/9/9(水) 5:05 お礼[未読]
【77402】Re:テキストボックスのスクロールバー β 15/9/9(水) 7:16 発言[未読]
【77403】Re:テキストボックスのスクロールバー tomi 15/9/9(水) 7:51 お礼[未読]
【77404】Re:テキストボックスのスクロールバー β 15/9/9(水) 9:28 発言[未読]

【77393】テキストボックスのスクロールバー
質問  tomi  - 15/9/8(火) 16:19 -

引用なし
パスワード
   よろしくお願いします。 
 ユーザーフォームにテキストボックスを配置しています。マルチラインはTrueです。
 当然自動折り返しとなっています。
 文字をたくさん入力した時に垂直のスクロールバーが自動的に表示されますが、
 そのスクロールバーが表示されたかどうかは取得できますでしょうか。
 変な質問でもうしわけありません。

【77394】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 19:25 -

引用なし
パスワード
   スクロールバー表示の有無を取得する目的は何でしょうか?
目的が分かれば回答が付きやすいかもしれません。

【77395】Re:テキストボックスのスクロールバー
発言  tomi  - 15/9/8(火) 19:45 -

引用なし
パスワード
   ▼カリーニン さん:
>スクロールバー表示の有無を取得する目的は何でしょうか?
>目的が分かれば回答が付きやすいかもしれません。
テキストボックスに入力された文章全体を表示したいので、フォントサイズを
 小さくしたいと思っており、スクロールバーが出た時点で現在のフォントサイズを一つ小さいサイズにしたいと思ってスクロールバーの出たのがわかればと考えました。以上よろしくお願いします。

【77396】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 20:02 -

引用なし
パスワード
   もしかしたらtomiokaさん?
違いましたらすみません。

最近他サイトで似たような質問に回答したものですから。

【77397】Re:テキストボックスのスクロールバー
発言  tomi  - 15/9/8(火) 20:32 -

引用なし
パスワード
   ▼カリーニン さん:
>もしかしたらtomiokaさん?
>違いましたらすみません。
>
>最近他サイトで似たような質問に回答したものですから。
モーグに質問をしましたが、予想していた解答が得られませんでしたので、
 別途方法を考えました。以上です。よろしくお願いします。

【77398】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 20:39 -

引用なし
パスワード
   私の回答としては、mougでの回答のとおりですし、なぜmougでの回答ではだめなのかを
書かないと、同じことの繰り返しになりますよ。

エクセル関連のQ&Aサイトの回答者はどこのサイトでもほぼ同じ方ですので。

あと、HNはサイトごとに変えるのではなく、統一したほうがいいです。

【77399】Re:テキストボックスのスクロールバー
発言  マナ  - 15/9/8(火) 20:50 -

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

これも、期待するものと違うかもしれませんが、
都度、一定のフォントサイズにして行数をカウントするのはだめですか

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  With TextBox1
    .Font.Size = 14
    MsgBox .LineCount
    If .LineCount > 5 Then
      .Font.Size = 10
    Else
      .Font.Size = 14
    End If
  End With
End Sub

【77400】Re:テキストボックスのスクロールバー
お礼  tomi  - 15/9/9(水) 5:00 -

引用なし
パスワード
   ▼カリーニン さん:
>私の回答としては、mougでの回答のとおりですし、なぜmougでの回答ではだめなのかを
>書かないと、同じことの繰り返しになりますよ。
>
>エクセル関連のQ&Aサイトの回答者はどこのサイトでもほぼ同じ方ですので。
>
>あと、HNはサイトごとに変えるのではなく、統一したほうがいいです。
カリーニンさんお手数をお掛けしました。
 通常はこのサイトを使っていましたが、8月の中旬頃からアクセスが出来なくなり、やむをえず、mougを利用しました。昨日からこのサイトにアクセス出来るようになり質問をさせて頂きました。私はこのサイトの方が利用しやすので、今後はこのサイトに質問をさせて頂きます。mougの件については常に全体表示をしたいのとテキストボックの横、幅が大きくなると他の部分が見えなくなるので、問題と思いました。
 もうすこし、考えてみます。ありがとうございました。

【77401】Re:テキストボックスのスクロールバー
お礼  tomi  - 15/9/9(水) 5:05 -

引用なし
パスワード
   ▼マナ さん:
>▼tomi さん:
>
>これも、期待するものと違うかもしれませんが、
>都度、一定のフォントサイズにして行数をカウントするのはだめですか
>
>Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
>  With TextBox1
>    .Font.Size = 14
>    MsgBox .LineCount
>    If .LineCount > 5 Then
>      .Font.Size = 10
>    Else
>      .Font.Size = 14
>    End If
>  End With
>End Sub
マナさんありがとうございます。上記でテストをしましたが、行数だけではなかなか私の希望が出来ないことがわかりました。文字数を減らし場合(行数が減る場合)にはフォントを一つ上げるとかです。そしてbeforeUpdateでなく、できればchangeイベントで実行したいと思っています。
 以上 よろしくお願いします。

【77402】Re:テキストボックスのスクロールバー
発言  β  - 15/9/9(水) 7:16 -

引用なし
パスワード
   ▼tomi さん:
▼tomi さん:
おはようございます。

本件、悩ましいですよねぇ。
別掲示板のやり取りの中でもありましたけど、ネックは、現在の文字フォントの種類とサイズで
現在の文字列がどれだけの長さ(桁数ではなく)なのか、エクセルが、その情報を我々にくれない
ということです。
しかも、今回の場合、【文字の高さ】つまり1行の高さとテキストボックスの高さを比較しなければ
いけないという要素も含まれてしまいます。この1行の高さも、我々は情報として取得できません。
(エクセルの意地悪?)

これも、別板になりますが、文字列の長さに関して、
ht p://www.excel.studio-kazu.jp/kw/20150908152533.html
でも、質問者さんともども悩みました。結局、苦肉の策でお茶を濁しましたが。

Changeイベントでの文字数の把握と、そのフォント情報から自動処理をしたいということは
重々理解できますが、う〜ん・・・

しかも、実は、解は1つだけではないということがあります。
たとえば文字数が20文字だったとします。
これをテキストボックスにすべて表示させたいという場合、

・1行にして、小さなサイズで表示
・2行にして、少し大きなサイズで表示
・3行にして、もっと大きなサイズで表示
  ・
  ・
  ・

無数に解があります。

で、それらの解の中で、今度は、そのフォントで、テキストボックスには何行収まるか
これを、その時の文字の高さで判断して、できるだけ下に余白行がない解を選択。

でも、コメントしたように、この文字の高さが取得できません。(と思います)

ご希望のスクロールバーが出現しているかどうかを把握できれば、Changeイベント内で
大きなフォントから始めて、ぐるぐる、ループさせて、スクロールバーが消えたら
そのフォントで決定 ということができるんですがねぇ。

やはり(お好みではなかったようですけど)別掲示板でのWinArrowさんのリコメンド、
入力したものを自分で調整して見やすくするということしかないのではと思います。

【77403】Re:テキストボックスのスクロールバー
お礼  tomi  - 15/9/9(水) 7:51 -

引用なし
パスワード
   ▼β さん:
>▼tomi さん:
>▼tomi さん:
>おはようございます。
>
> 本件、悩ましいですよねぇ。
> 別掲示板のやり取りの中でもありましたけど、ネックは、現在の文字フォントの種類とサイズで
>現在の文字列がどれだけの長さ(桁数ではなく)なのか、エクセルが、その情報を我々にくれない
> ということです。
>しかも、今回の場合、【文字の高さ】つまり1行の高さとテキストボックスの高さを比較しなければ
> いけないという要素も含まれてしまいます。この1行の高さも、我々は情報として取得できません。
> (エクセルの意地悪?)
>
>これも、別板になりますが、文字列の長さに関して、
>ht p://www.excel.studio-kazu.jp/kw/20150908152533.html
>でも、質問者さんともども悩みました。結局、苦肉の策でお茶を濁しましたが。
>
>Changeイベントでの文字数の把握と、そのフォント情報から自動処理をしたいということは
>重々理解できますが、う〜ん・・・
>
> しかも、実は、解は1つだけではないということがあります。
>たとえば文字数が20文字だったとします。
>これをテキストボックスにすべて表示させたいという場合、
>
>・1行にして、小さなサイズで表示
>・2行にして、少し大きなサイズで表示
>・3行にして、もっと大きなサイズで表示
>   ・
>  ・
>  ・
>
>無数に解があります。
>
>で、それらの解の中で、今度は、そのフォントで、テキストボックスには何行収まるか
> これを、その時の文字の高さで判断して、できるだけ下に余白行がない解を選択。
>
>でも、コメントしたように、この文字の高さが取得できません。(と思います)
>
>ご希望のスクロールバーが出現しているかどうかを把握できれば、Changeイベント内で
>大きなフォントから始めて、ぐるぐる、ループさせて、スクロールバーが消えたら
>そのフォントで決定 ということができるんですがねぇ。
>
>やはり(お好みではなかったようですけど)別掲示板でのWinArrowさんのリコメンド、
> 入力したものを自分で調整して見やすくするということしかないのではと思います。
β さん適切なアドバイスありがとうございます。確かに悩ましい問題で、
 出来るだけ先方(利用者)の便宜を図ってやりたい気持ちで投稿しました。
 スクロールバーの出現が取得できれば・・・・
 もう一度考えなおします。

【77404】Re:テキストボックスのスクロールバー
発言  β  - 15/9/9(水) 9:28 -

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

なんの役にも立たないレスですけど。

おもいつきで、API の GetScrollInfo で情報取得が成功したら、あるいは
API の SendMessage でスクロールバーにメッセージを送り、成功したら
スクロールバーが表示されている、失敗したら表示されていないという制御が
できるかもと、トライしましたが、そもそもVBAで扱うユーザーフォームでは
テキストボックスのハンドルが取得できないので(私の力量では)、
その思い付きを試すこともできません。
(試して思惑通りかどうかもわかりませんが)

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