• ベストアンサー

テキストボックスの制限

VB2005にてプログラム作成を考えておりますが、一つのフォームに作成できるテキストボックスは何個まででしょうか? 経理的な物をで、科目数(120前後)*月(12)を考えております。 本来は分割すべきだとは思いますが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

ちょっと興味があったので実験してみました。 (コードは以下のものを使用) Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  Dim j As Integer = 0  Dim i As Integer = 0  Try   Dim objText As TextBox   Me.SuspendLayout()   For j = 0 To 120    For i = 0 To 120     objText = New TextBox     objText.Location = New System.Drawing.Point(10, 10)     objText.Name = "Text" & j & i     objText.Size = New System.Drawing.Size(10, 10)     objText.Text = "Text" & j & i     Me.Controls.Add(objText)    Next   Next   Me.ResumeLayout(False)  Catch ex As Exception   Console.WriteLine(j & " " & i)  End Try End Sub 結果は私の環境では71 27を出力して終了しました。 つまり71*120 + 27 = 8547個までは可能といえば可能でした。^^; で、70*120の場合でやってみると立ち上がりはしましたが、反応が遅すぎて使い物になりませんでした。 で、問題のjのループ12でiのループ120では普通に入力が可能でした。 力技でなら普通に可能ですが、ANo.1のおっしゃるとおり、なんらかの方法で分割する事を考えた方がいいですね。。。

gonta_256
質問者

お礼

利用環境は殆どXPなのですが、数台98マシンがありますのでこれで7千も表時したら……あぁ~(笑 以前作った(SQL)-(Access)の場合、4分割でやったのですが、切換に時間がかかると不評だったものでして。 ありがとうございました。

その他の回答 (5)

noname#221739
noname#221739
回答No.6

単純に『GrapeCity SPREAD』『GrapeCity ElTabelle』ってなものを使えば早いのでは? 横列には各月。 縦行には必要な科目。 …ってので、楽勝では? それとも、客との契約上、こういったサードパーティ製OCXは利用できない、とか?

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.5

Excelオブジェクトを呼び出して貼り付けるとか(^_^;) というか、むしろ、Excel+VBA+マクロで作った方が早そうと思ったりします。 VB2005限定でないのなら、製作言語の再考も考えた方がいいかも? DataGridView 2005が手元になくてわかりませんでした(VB2003はDataGridしかない) が、名称からすると使えそうですね。

gonta_256
質問者

お礼

ええ。確かにエクセルだと楽だとは思います(実際。以前エクセルで作ってました) ただし、エクセルだといろいろしでかす人が多いんです(笑 で、Accessで作ったのですが、テキストボックスの制限で、いくつか分割しても表示しきれない部分があったので、今回VBにしようかと思った次第です。 あと、質問で120*12と書いてますが、これは一回の表示でして、これに1000ヶ所と言うのがついてきますので実質エクセルでは……(ごめんなさい ありがとうございました。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★『DataGridView』コントロールは便利そうですね。 ・私は C/C++ 言語系ですので『全部一度に見たい』場合はリストビュー・コントロールを使います。  リストビュー・コントロールとは、エクスプローラの『詳細(D)』の一覧です。→アイコン表示も  出来るヤツです。 ・多分『DataGridView』はリストビューをより使いやすくした VB 専用のコントロールでしょうね。 ・『リストビュー』や『DataGridView』コントロールで『表』を作って表示します。その後、  『各科目別%計算』と『縦の小計』は gonta_256 さんが自分で実装してみるのが良いでしょう。 ・上記のコントロールならば、スクロールバーでより多くの情報を見れますから。 ・以上。C/C++ 言語系の技術者より。

gonta_256
質問者

お礼

DataGridViewは、私もまだ試していないので何ともいえませんが、表示列の固定や行の背景色変更など、かなりエクセルライクだと感じました。 以前作ったAccessの場合、リスト関係は全部エクセルの印刷ビューを使ってましたが、ご承知の通り、項目数が多いので見づらいと不評でした(どねいせいっちゅうねん(笑) ありがとうございました

  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.2

表示可能なフォームオブジェクトの最大数は開発環境側では無くブラウザに依存します。 IEやFirefoxであれば常識的に実用上必要な数であればOKだと思いますが、携帯やPDAなどでは制限が出てくるものもあります。 それらの仕様について書かれているサイトを見つけ切れませんでしたが、自分であれば対象となるブラウザを入手し検証するべきだと考えます。

gonta_256
質問者

お礼

プラウザに依存するんですか?しりませんでした。 まぁ、利用環境はPCオンリーなのでその辺は大丈夫だと思います。 ありがとうございました。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★ダイアログ・エディタでは1フォームに最大 255 個です。 ・その後に API 関数の CreateWindow() などで作成すれば 65535 まで作成できますが、  論理上のお話で実用的ではありません。→リソース不足で起動できないなどの障害あり。 ・Windows では『テキストボックス』も1つのウインドウとして管理しているため、あまり  多くすると1フォームのウインドウを描画するのに時間がかかってしまいます。 ・科目数(120個)×月数(12個)=テキストボックス(1440個)は多すぎるので、科目数をコンボ  ボックスに変更して、月数(12個)だけをテキストボックスにするといいと思います。 ・以上。おわり。

gonta_256
質問者

お礼

早速の回答ありがとうございます。 本来ならOh-Orangeさんの言う通りにすべきなんでしょうが、「全部一度に見たい」と言う人が結構ありまして……(汗 DataGridViewを使うと各科目の%計算やら、縦の小計やらが出来ないですし……う~む。 ありがとうございました。

関連するQ&A

  • Acでテキストボックス上に罫線を常に表示したいのですが・・・ 

    Access97です。OSは2xです。   >入力フォームを作成しているのですが、最大文字数Overをする間際に罫線を 引いています。 >通常のツールボックスから直線を選択して表示しておりますが、入力する際 テキストBOXにフォーカスがある場合、テキストBox内の文字数Over直線が消え てしまいます。 >>これを回避して常に最前に出す方法は無いのでしょうか? VB6で作成された物を見たことはあるのですが・・・VBAでは・・・出来ますか??

  • テキストボックスクリックでフォームたちあげ

    VB6.0でプログラム作成中です。 あるhinというオブジェクト名のテキストボックスをデータを入力しようとすると、Form2を立ち上がるようにしたいのです。以下のコードでいけると思ったのですが、フォームがあがらない状態です。 指摘頂ける方、宜しくお願い致します。 内容:フォーム2 キーボードの役割 テキストボックスに触れると、キーボードが立ち上がる。 Private Sub hin_Change(Index As Integer) Form2.Show End Sub

  • テキストボックスのバグでしょうか?

    VB5(SP3)を使用しています。 例えばフォームにテキストボックスを2つ貼りつけて、プログラムを実行します。 IMEの入力設定を「ローマ字入力」の状態で始めたとします。 最初のテキストボックスでキーボードの【Alt】+【カタカナ・ひらがな/ローマ字】を押しても「かな入力」になりません。次のテキストボックスにカーソルを移動すると「かな入力」が有効になります。 ACCESSとかだとその場で有効になります。 これはVBのバグなのでしょうか? 使用PC:DOS/V 使用OS:WindowsNT4.0

  • 【VB6】複数行のテキストボックスの改行

    お世話になります。 VB6で、複数行入力出来るテキストボックスを作成しました。 そのテキストボックスの横幅は、最大30文字(60byte)まで入力出来ます。 ですが、あくまでフォーム上で伸縮させていた為、中途半端に折り返しされます。 【例】 iiiiiiiiiijjjjjjjjjjiiiiiiiiiijjjjjjjjjjiiiiiiiiiijjjあ jjjjjjj (↑計62バイトなので、本来であれば2行目に改行されてしまったjjjjjjjの左5文字を1行目に表示させたい) その行は特定のバイトを超えたらその場で強制的に改行!というソースを追加したいです。 その為には、常にテキストボックスの入力バイト数を監視するようにしなければならないと思いますが、なるべく動作や容量が重くならないような方法はありますでしょうか?

  • テキストボックス内で改行したいです。

    テキストボックス内で改行したいです。 テーブルのフィールドにあるスラッシュ区切りのデータ を抜き取り一行づつ表示することができたのですが スラッシュ6つ目でテキストボックス内で改行して テキストボックス内で隣に表示させたいのです。 どのようにしたらよいでしょうか? 解る方教えてはいただけないでしょうか? よろしくお願いします。 下記は途中までのコードです。 'スラッシュ区切りで分割 vaspl = Split(Nz(Forms![フォーム名]![テキストボックス名]), "/", -1, vbBinaryCompare) Forms![F_N1]![詳細テキストN1] = "" '分割結果を一行づつ表示する For Each vret In vaspl Forms![フォーム名]![詳細テキストN1] = Forms![フォーム名]![テキストボックス名] & vret & vbCrLf Next

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

    フォーム内で幾つかテキストボックスを作成するのですが、表示ビューをしても、テキストボックス内に英数字ができないような設定をしたいのです(表示のみのボックスのため) どうすればよろしいのでしょうか?

  • テキストボックスの文字数制限について

    エクセル2000でVBAを勉強中の初心者です。 ユーザーフォームのテキストボックスに入力できる文字数の制限や、ボックス内での文字の折り返し表示はできるのでしょうか。どなたかご指導いただけないでしょうか。

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

    今、エクセル2003についているVBで フォームを作ってその中にテキストボックスを入れて その中に入力した文字で検索を行いたいと思っているのですが。 私の持っている教科書にはやり方が載っていません。 こういうときどうしたらいいのでしょうか? また、フォームの機能に詳しいサイトなどがあったら教えてください、お願い致します。

  • エクセルでテキストファイルからフォームのテキストボックスにテキスト挿入するマクロ

    マクロでフォームのテキストボックスに直接テキストファイルからテキストを挿入したいのですが出来ますか? opentextでエクセルシートに入れてからフォームにコピーすることはできたのですが、それだと重くなってしまうので直接取り込みたいんですがうまくいきません。 VBやJAVAのreadlineのようなものは使えないんでしょうか。

  • [VBS] テキストボックスの複数配置

     いつも閲覧・勉強させていただいています。ありがとうございます。  VBSでテキストボックスが3つ縦に並んでいるようなフォームの作成は難しいのでしょうか?VBを始めたばかりで不明な点が多いため、Vector等で「vbs」で検索して片っ端からコードを開いて参考にしていますが、フォームについてそれらしいものが見当たりません。このような場合、VisualBasic(?)で作成する方が好ましいのかも知れませんが。。。  もしお詳しい方がいらっしゃいましたらどうぞよろしくお願いします。

専門家に質問してみよう