• 締切済み

access テキストボックス自動高さ調整

帳票フォームにてデータを表示しています データの中でメモ型を配置しており、長い文章が書くときもあれば、短く済むときもあります 長い文章に合わせてテキストボックスの高さを大きめにとっておけばよいのですが、そうするとスクロールするのが大変なのと見栄えが悪い為、文字数に合わせて高さが変わればいいなと思いネットで検索してみました http://www.accessclub.jp/bbs3/0146/superbeg50129.html 結論的にはここに書いてある事をやりたいのですが。。。 VBAの文章をどこに書くかまでは書いておらず困っております^^; どなたかアドバイスをいただけないでしょうか?

  • 9tree
  • お礼率24% (22/89)

みんなの回答

  • hogya
  • ベストアンサー率67% (49/73)
回答No.4

難儀そうですね。 要件としてはAccessの機能がある程度わかった上での応用編みたいなものですからね。 コードを書く上での方法としては、最低限の動作の確認できるコード(これをミニマムコードと言って私の提示したサンプルのようなものです)にご自分のコードを動作を確認しながら足していくという方法もあります。 この方法はどこかで期待通りに動かなくなった時点がピンポイントで特定できます。 最初のご質問の方法でやる場合も同様な方法で試すことができます。 私からのアドバイスとしては以上になりますが、がんばってください。

9tree
質問者

お礼

わかっていた事ですがやはりまだまだ勉強が足りないですね・・・ もう少し修行してみます おつきあいありがとうございました

  • hogya
  • ベストアンサー率67% (49/73)
回答No.3

すいません、もうひとつ。 デザインモード等で手動でサイズを変更して保存したりした場合もうまくいかない場合があります。対策として、ラベルの初期化のコードを追加してみました。まず先にこのラベルの初期化を試してみてください。 (これは私の考慮漏れですね。申し訳ない。) ■1つめのフォーム(フォーム2を開くフォーム)のボタンのクリック時 Private Sub コマンド1_Click() Dim FName As String Dim myLabel As Label FName = "フォーム2" Application.Echo False '描画停止 DoCmd.OpenForm FName, acDesign 'デザインモードで開く Set myLabel = Forms(FName).ラベル1 'ラベルの初期化 myLabel.Caption = "" myLabel.SizeToFit myLabel.Caption = "あいうえお" & vbCrLf & "かきくけこ" & vbCrLf & "さしすせそ" & vbCrLf & "たちつてと" & vbCrLf myLabel.SizeToFit DoCmd.Close , , acSaveYes '保存 Application.Echo True '描画開始 DoCmd.OpenForm FName 'Normalモードで開く End Sub

9tree
質問者

補足

新しい文を入れてみました テストで作ったのは変わりなく開きます しかしやはり自分が作ったものは前回と全く結果は同じでした ボタンで開く以前にデザインビューからフォームビューに切り替えたらエラーが発生します 難儀ですね^^;

  • hogya
  • ベストアンサー率67% (49/73)
回答No.2

実際に今のシステムがどうしているかや、どううまくいかないのか正確な実際の情報がわからないので(汗)思いつくところでは下記ぐらいですね。 ・フォームヘッダーではなく、ページヘッダーにしていた。 ・フォームといいつつ実はレポートでも表示しようとしていた ・実はデータとの連結項目で数値項目に文字を代入していた、etc・・・ お力になれずすいません。

9tree
質問者

補足

・フォームヘッダーではなく、ページヘッダーにしていた。 →確認しましたがフォームヘッダーですね というかページヘッダーがわかりません^_^; ・フォームといいつつ実はレポートでも表示しようとしていた →レポートでは表示してないですね ・実はデータとの連結項目で数値項目に文字を代入していた →書式は空欄です。特に数値になっているわけではないようです ご考慮くださってありがとうございました

  • hogya
  • ベストアンサー率67% (49/73)
回答No.1

それほど難しいことを考えなくてすむ簡易的な方法を紹介します。 要はラベルのサイズ自動調整機能を使って計算されたサイズでテキストボックのサイズを決めるというものです。 単に全文を見せたいだけのような仕様の場合は使えるケースがあります。ご参考までに。 フォームをふたつ用意します。 1つめのフォームにはコマンドボタンをひとつ配置。 2つめのフォームにはラベルを1つとテキストボックスを1つそれぞれ小さめに配置(大きくすると動作確認にならないので)。 あとはイベントに下記の内容を記述します。 ■1つめのフォーム(フォーム2を開くフォーム)のボタンのクリック時 Private Sub コマンド1_Click() Dim FName As String Dim myLabel As Label FName = "フォーム2" Application.Echo False '描画停止 DoCmd.OpenForm FName, acDesign 'デザインモードで開く Set myLabel = Forms(FName).ラベル1 myLabel.Caption = "あいうえお" & vbCrLf & "かきくけこ" & vbCrLf & "さしすせそ" & vbCrLf & "たちつてと" & vbCrLf myLabel.SizeToFit DoCmd.Close , , acSaveYes '保存 Application.Echo True '描画開始 DoCmd.OpenForm FName 'Normalモードで開く End Sub ■2つめのフォーム(フォーム1から開かれるフォーム)のオープン時 Private Sub Form_Open(Cancel As Integer) With Me.テキスト1 .Value = Me.ラベル1.Caption .Width = Me.ラベル1.Width .Height = Me.ラベル1.Height End With Me.ラベル1.Visible = False End Sub

9tree
質問者

補足

回答ありがとうございます。 試しにフォーム1,2を作ったら確かになりました。 だもんで、これを自分が作ってるものに組み込んだのですがうまく行かず。。。。 ちなみに開くフォームの形としてはラベルをヘッダーに持ってきております。 これが原因かなぁ~と思って、別途テキストボックスをつくってみたんですが、 「このオブジェクトに値を代入することはできません」とエラーが出て、 .Value = Me.ラベル1.Captionの部分が反転します。。。 何が悪いのでしょうか^_^;

関連するQ&A

  • ACCESS2000の帳票フォームでテキストボックスの入力値を取得したい

    こんにちは。ACCESS2000でツールを作成しています。 テーブルはExcelにリンクさせ、クエリを介して帳票フォームで データを表示しています。 帳票フォームのレコード毎にテキストボックスを追加して それぞれ入力できるようにし、その値をVBAで取得したいのですが どうすればよいでしょうか。 テキストボックスを追加して実行すると、一つのテキストボックスに 入力した値が全てのレコードに反映されているようです。 帳票フォームのしくみがよく分かりません。 どなたか教えていただけないでしょうか。 宜しくお願いします。

  • Access2007、フォームのテキストボックスのサイズ調整に関して

    いつもお世話になっております。 Access2007で、データ型がメモ型のフィールドをフォームにした時、最初に指定したテキストボックスのサイズを超える時に、自動でテキストボックスの大きさを変えることはできるのでしょうか?

  • マウスホイールでテキストボックスのスクロールバーを

    マウスホイールでテキストボックスのスクロールバーを移動させたいです 帳票フォームにしています。 フォームのテキストボックスにスクロールバーありにしてるのですが そのテキストボックスがアクティブになった時に、 マウスホイールをクリクリした時に、 テキストボックスのスクロールバーを移動させたいのですが フォーム上スクロールバーが動いてしまいのレコードが移動してしまいます。 テキストボックスがアクティブの時に↓キーを押せばテキストボックスの スクロールバーは移動しますが、 マウスホイールで操作することは不可能でしょうか? テキストボックスには 1 2 3 4 5 6 7 8 9 10 がはいっています。

  • テキストボックスの書式について(Access)

    Access2003の帳票フォーム上にあるテキストボックスで単価を表示させているのですが、単価が小数点1位まであるものと整数のみのものがあります。これを次のように単価のテキストボックスに表示させたいのですが 例1)単価:100→\100 (\100.0では無い) 例2)単価:99.4→\99.4 <説明> データが整数の場合は整数表示で先頭に¥マークを、データが小数を含む場合は小数を含めた表示で先頭に¥マークを付ける。 どの様な方法があるでしょうか。条件付き書式などが該当するように思えますが、インターネットで調べてもよく分かりませんでした。 VBAのサンプルコードなどご呈示いただければ幸いです。

  • ExcelVBAのテキストボックスの文章を記録したい。

    ExcelVBAのテキストボックスの文章を記録したい。 初めて質問します。ExcelVBAを独学で始めて2週間の超初心者です。 ユーザーフォームにテキストボックスを配置してメモ帳のように使用したいのですが、ユーザーフォームを閉じると打ち込んだ文章は消えてしまいます。テキストボックスに打ち込んだ文章を常に記録して残す方法はあるのでしょうか。レベルの低い質問で申し訳ありませんが困ってます。宜しくお願い致します。

  • テキストボックスの書式について

    Access97を使用しています。レベルはかなり低い初心者です。 「フォーム」のテキストボックスに単語や文章を入力し、「レポート」で出力するのですが、 句読点が行頭に来たり、問答無用で上配置になったりとかなり見栄えが悪くなってしまっています。 「フォーム」は入力するだけなので何とかガマンするとしても、 「レポート」のテキストボックスで、禁則処理や文字配置などの設定はできないものでしょうか。 横方向の配置はツールバーで簡単に修正できるのですが、縦方向の修正方法がわかりません。 そういえばWord97のテキストボックスも縦配列はできなかったような気が…Excelは「プロパティ」で設定できたけど。 詳しい方、お返事お願いします。

  • ACCESS2010テキストボックス値を抽出条件に

    ACCESS2010にて、フォームに作ったテキストボックスの入力値(数字3桁)をクエリの抽出条件にしたいと考えています。 ただ、そのテキストボックスの数が30個の為、クエリデザイン画面の抽出条件欄にorを用いた条件式で設定することが出来ませんでした。(文字数上限超?) そこで、VBAを用いて抽出条件を設定しようと考えているのですが、初心者のため全く勝手が分かりません。VBAでの設定方法やVBA以外での抽出方法があれば教えて頂けないでしょうか。 尚、テキストボックスには商品コード(数字3桁)を入力し、売上データを集計したクエリにおいて、フォームのテキストボックスに入力された複数の商品コードを抽出条件に設定したいと考えております。 以上、どうかお願い致します。

  • Access2000のフォームのテキストボックスで強制的に改行する方法

     フォームに表示するデータをクエリ上で結合させています。((1)・・・・(2)・・・・(3)・・・・)  フォーム上のテキストボックス1つで、    (1)・・・・    (2)・・・・    (3)・・・・ と強制的に改行をいれる、VBA等があったら教えてください。複数のテキストボックスで表示したくありません。

  • ACCESSのフォーム(テキストボックス)について

    テキストボックスに入力された文字が多いと、下方が隠れて見えなくなってしまいますが、 テキストボックス内部をいちいちスクロールするのではなく、テキストボックスがアクティブになったら、 中のテキストをポップアップのように表示させる機能(か、VBA)ってあるのでしょうか。 テキストボックスsetfocusで、フィールドをラベルに渡す??? できるだけわかりやすいように書いたつもりです。 でも、わかりにくかったら、すんません!

  • ACCESS97 VBA のテキストBOX

    VBAも初心者です。 ACCESSのフォームであるテキストBOXの内容を ボタンで同じ他のフォームのテキストBOX にデフォルト値としてSETするというような 処理をするというような場合どのような記述 をしたら良いでしょうか? ヒントでも良いのでお願いします。

専門家に質問してみよう