• ベストアンサー

配列を使ってみたんですけど

Kai_PGの回答

  • Kai_PG
  • ベストアンサー率40% (2/5)
回答No.1

配列をどのように使おうとされたのでしょうか? どこでどう使っているかによってアドバイスが変わってきますので、お願いします。 たとえば、不明だと思われる点ですが、「テキストの入力チェックのタイミング」です。どのタイミングでチェックしたいのでしょうか? コマンドボタンを押したときでしょうか? テキストボックスからフォーカスが移動した瞬間でしょうか? 補足をお願いいたします。

関連するQ&A

  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • VB.NETでテキストボックスをコントロール配列のように扱いたいんですが

    VB.NETではコントロール配列はサポートされていませんが、TextBox1~TextBox10を配列のように扱う方法はありますか?ちなみに、以下の方法ではエラーとなりました。 Controls("TextBox" & i).Text でTextの内容を取得しようとした よろしくお願いします。

  • キーボード101配列と106配列

    同じような症状になった人がいれば教えて頂きたいのですが、 メモ帳やエクセルでテキストを入力している時は106配列になり、 Internet Explorer や Outlook Expressでテキストを入力 している時は101配列となります。 デバイスマネージャのキーボードを確認すると 「101/102 英語キーボードまたは Microsoft Natural PS/2 キーボード」 と表示されていますが、メモ帳などでテキストを入力している時は106配列となる為、 原因は違う所にあるのかな?と思っています。 全てのアプリケーションで106配列でテキストを入力するには どのようにすればよいのでしょうか?

  • textboxの二次元配列で質問

    textboxの二次元配列で質問 Visual Web Developer 2008を使いWebアプリケーションの入力フォームを開発中です。言語はVBです。  複数行のtextboxに入力された文字を連結する方法が分かりません。ネットでいろいろ検索して二次元配列をすれば可能なようですが、分かりやすく書いてあるサイトが見つからず、苦戦しています。列数は10列。行数は50行ぐらいあります。 ↓(サンプル)  例えば、下のような入力フォームのtextboxにあ・い・う・え・お・か・き……と入力された文字列で、buttonをクリックしたら「あいうえおかきくけこ…」と文字列の連結した実行結果を出したい場合です。       列   あ|い|う|え|お| | |   か|き|く|け|こ| | | 行 さ|し|す|せ|そ| | |   た|ち|つ|て|と| | |   な|に|ぬ|ね|の| | |    | | | | | | |    | | | | | | |    textboxが多いので、二次元配列と繰り返し処理(文字がなくなるまで繰り返す)を使って、簡単にできないでしょうか? 初心者なので分かりづらい質問で申し訳ありません。 参考になるページやコードがあったら教えて下さい。 よろしくお願いします。

  • VBAでコントロール配列を持つことは可能ですか?

    Excel2002、OSはXPです。 VBではコントロールに配列を持つことが出来ましたが、 VBAでコントロール配列を持つことは可能でしょうか? やりたいことはユーザーフォームにラベルを100個ぐらい貼り付けて、 テキストボックス入力した値がCell(i,1)と等しければ、 i番目のラベルのCaptionに文字を入力したい。という感じです。 もしVBのようにコントロール配列を持てれば、 If TextBox1.text=Cells(i,1) Then Label(i).Caption="~~" という風に出来るのですが、どうも配列の設定がVBのようにできません。 プロパティにINDEXが無いですし、オブジェクト名を同じにしたら エラーとなってしまいますし。。 もし出来ないのであれば、何か回避策のようなものはないでしょうか? 力技で100個IFを書けば出来ることは出来るのですが・・ If TextBox1.text=Cells(i,1) Then If i = 1 Then Label1.Caption="~~" ElseIf i=2 then Label2.Caption="~~" ・・・・

  • エクセルVBAで複数条件とデーターの重複チェック

    ユーザーフォーム(UserForm1)からSheets("データー")に転記しています 今現在はUserForm1のデーターを入力後「CommandButton2」でシートに書き込みしていますが、重複データーが出て来るので、「CommandButton2」を押した時に重複を防ぎたいのです データーはSheets("データー")の最終行に次々と転記していってます Sheets("データー")に見出し行あり Dim RowNum As Long '最終行 その中で[Me.textbox1]&[Me.textbox3]は必須項目したい .Cells(RowNum, 3).Value = Me.textbox1.Value  'メイン:必須項目 .Cells(RowNum, 4).Value = Me.textbox2.Value  'サブキー:空白でもOK .Cells(RowNum, 5).Value = Me.textbox3.Value  'キー:必須項目 やりたいこと ユーザーフォーム(UserForm1)のテキストボックス入力完了後「CommandButton2」でシートに書き込み時に重複チェック 【UserForm1上の空白チェック】 (1)Me.textbox1&Me.textbox2&Me.textbox3の空白チェック 条件 Me.textbox2は空白でもOK (2)Me.textbox1が空白の場合UserForm1に入力したデーターを保持したままtextbox1をフォーカスする(できれば背景色と文字色を変える。入力後背景色と文字色は元に戻す) (3)Me.textbox3が空白の場合UserForm1に入力したデーターを保持したままtextbox3をフォーカスする(できれば背景色と文字色を変える。入力後背景色と文字色は元に戻す) (4)Me.textbox2が空白の時はメッセージを表示「空白のままでいいですか?はい・いいえ」 (5)はいの時は処理を続行 (6)いいえの場合は場合UserForm1に入力したデーターを保持したままtextbox2をフォーカスする(できれば背景色と文字色を変える。入力後背景色と文字色は元に戻す) 【データーシートとの重複チェック】 (7)textbox3&Sheets("データー")の該当全セル列の重複チェック 条件1 textbox2が空白の時 Me.textbox1&&Me.textbox3とSheets("データー")メイン&キー該当全セル列との重複チェック (8)重複の場合はメッセージを表示「キーが重複しています!修正して下さい」OKボタンのみ (9)OKが押されるとUserForm1に入力したデーターを保持したままtextbox3をフォーカスする(できれば背景色と文字色を変える。入力後背景色と文字色は元に戻す) 条件2 textbox2にデーターがある場合Sheets("データー")のサブキー&キー該当全セル列との重複チェック (10)重複の場合はメッセージを表示「キーが重複しています!修正して下さい」OKボタンのみ (11)OKが押されるとUserForm1に入力したデーターを保持したままtextbox3をフォーカスする(できれば背景色と文字色を変える。入力後背景色と文字色は元に戻す) (12)重複が全てなくなったらSheets("データー")の最終行に書き込み (13)UserForm1をブランク状態で表示 以上よろしくお願い致します

  • テキストボックスに入力された内容をクリップボードにコピー

    プログラミング初心者です。少し教えていただけないでしょうか? 3*3で配置したテキストボックスに入力された内容をクリップボードにコピーするツールを作ろうと思っています。  受付番号  名前    備考 1[TextboxA1][Textbox12][Textbox13] 2[TextboxA2][Textbox22][Textbox23] 3[TextboxA3][Textbox32][Textbox33] [実行ボタン] 受付番号は入力の簡素化のため"No."という文字列を入力したいと思っています。もっと効率的な方法があると思いますが 実行ボタンを押したときに下記のプログラムを実行すれば 一応クリップボードにコピーできることが分かりました。 Dim MsgAll as string MsgALL = "No." & Textbox1.text & Textbox12.text & Textbox13.text & vbCrLf &TextboxA2.text (以下Textbox33.textまで) Clipboard.SetDataObject(MsgAll) ただし、3*3のテキストボックスは必ずしも全て入力されるわけではないので空白行の場合はその行をジャンプしたいのです。 各行の受付番号のテキストボックスに入力があるかどうかを判断させて空白だった場合はクリップボードにコピーさせなければよいのでは?と考えています。 色々ネットで調べた結果あらかじめ各行の内容を配列に代入しておき、 テキストボックスのコントロール名を取得してFOR文で処理を繰り返す方法を考えました。 lines(1) = "No." & TextboxA1.text & Textbox12.text & Textbox13.text & vbCrLf lines(2) ="No." & TextboxA2.text & Textbox22.text & Textbox23.text & vbCrLf lines(3) ="No." & TextboxA3.text & Textbox32.text & Textbox33.text & vbCrLf  For i = 1 To 3   ControlName = "TextBox_top" & i   If Me.Controls(ControlName).Text = "" Then    Else     MsgAll = MsgAll + lines(i)     Clipboard.SetDataObject(MsgAll) End If Next 以上のようなプログラムで動くかどうか不安でしたので 新たにプロジェクトを作り直し試みたところ動作したので ほんとうのプログラムにこの部分のロジックを組み込んで動作させたところ ”オブジェクト参照がオブジェクト インスタンスに設定されていません。”のエラーが返り正常に動作しませんでした。 テキストボックス名などがテストプログラムなどとは異なりますが 他に異なる部分はありません。 なぜこのようなエラーが発生してしまうのでしょうか? また、もっと効率のよい方法がある場合はその方法もご教示願えないでしょうか? 大変お手数ですがよろしくお願いいたします。

  • gets()で得たものの配列化

    こんにちは。Cプログラミング初心者です。 gets()で得た空白付文字列を、 コマンドライン入力のargv[]のように配列化したいです。 例: 入力:This is a pen. tmess[0] This tmess[1] is tmess[2] a tmess[3] pen. 区切り文字列" "で、strtok()を使えばよいかと思いましたが、 空白が認識されずエラーが出てしまいます。 int flag,n=0,i; char *mess,**tmess; gets(mess); flag=strtok(mess," "); if(flag!=NULL){ while(flag!=NULL){ tmess[i]=flag; flag=strtok(NULL," "); n++; } どうすれば空白を認識してくれるのでしょうか? また、他に良い方法があるのでしょうか.. 回答よろしくお願いします。

  • テキストボックス内のテキストをchar配列へ

    Microsoft Visual C++ 2010 Expressで勉強中なのですが、 テキストボックス内に this->textBox1->Text = L":100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF"; このように文字列を入れているのですが、これを char cOrg[128]; この配列に入れるにはどのようにしたら良いのでしょうか?

  • コントロール配列と同じような扱い方

    TextBox1、TextBox2、TextBox3・・・・TextBox10 と10個のテキストボックスにVB6で使っていたコントロール配列と同じような処理の仕方をコードで教えていただけませんか。 for i=0 to 9 TextBox(i).Text=i next i 上記のコードをVB.NETで書くとすれば、どのように書けばいいかということさえわかれば、なんとか頑張れる気がします。