• 締切済み

処理をまとめたい。

VB2008を使用しています。 現在、VBのTextBoxにExel内のデータを表示するプログラムを作成しています。Exel内には10のシートがあり、それぞれのシート内に、20列×50行のデータ(文字)が入っています。 VBには1~10(グループ化)及び11~30の(グループ化)RadioButtonとTxstBox50個を配置し、1~10のRadioButtonでシート名を、11~30のRadioButtonで列を選択し、各TxstBoxに50行のデータを取得したいと考えています。 現在、下記のコードを作成したのですが、この方法ではシート数10×列数20=200もの似たようなコードを作成しなければなりません。もっとスマートな方法はないでしょうか? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' excelを定義 Dim excel As New Microsoft.Office.Interop.Excel.Application ' test.xlsを取得 Dim book As Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open("C:\test.xls") ' 1枚目のワークシートを取得 Dim Item(1) As Microsoft.Office.Interop.Excel.Worksheet Item(1) = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) ・ ・ Item(20) = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) Dim COLUMN As String If RadioButton1.Checked = True AndAlso RadioButton13.Checked Then COLUMN = "A" TextBox1.Text = Item(1).Range(COLUMN & "1").Value ・ ・ TextBox50.Text = Item(1).Range(COLUMN & "50").Value Else If RadioButton10.Checked = True AndAlso RadioButton30.Checked Then COLUMN = "T" TextBox1.Text = Item(10).Range(COLUMN & "1").Value ・ ・ TextBox50.Text = Item(10).Range(COLUMN & "50").Value Else End If

みんなの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.2

ちょっと冷たい言い方になってしまいました。 ループ処理(繰り返し処理)の考え方を示しますので検討してみてください シート数10枚(固定) 1シート当たり20列50行 for i=1 to 10 この中に1シート分の処理を記述 next 1シート分の処理とは→1列分の処理を20回繰り返すこと for j=1 to20 1列分の処理 next 1列分の処理とは→1セル分の処理を50回繰り返すこと for k=1 to 50 1セル分の処理 next つまり   For i = 1 to 10     For j = 1 to 20       For k=1 to 50         1セル分の処理       Next     Next   Next のような構造になります もちろん回数が固定じゃない場合はWhile Wendなどの制御構造を使うことになります。 1列ごとの処理の前に必要な処理があれば  2つ目のForの前の行に書きます。 当然1列終わるごとに行う処理があればNextの次に書きます。 というのがこの処理の基本的な構造になると思います。 ただ、一番内側のループはTextBoxが配列として扱えなければ、For Eachを使うことになるかもしれません。 あとはご自分で調べてください。

caster01
質問者

お礼

度々ご回答頂きありがとうございます。 教えて頂いたことを参考に、勉強させて頂きます。 本当にありがとうございました。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

とてもプログラムとは。。。 Worksheet,行、列に変数を使って変数に選択した値を入れるなりLoopするなりしてコードを折りたたむのが基本中の基本でしょう。 これじゃ人がすることをそのままコードで記述しているだけじゃないですか 私はVBからExcelを扱ったことがありませんが COLUMN=”B" Range(COLUMN & "50").Value は cells(50,2),value という風にかけませんか? かけなきゃ文字列配列作るなりいくらでも対処法はあると思いますが 制御の基本を勉強してください

caster01
質問者

お礼

回答頂きありがとうございます。 まったくもってrivoisuさんのおっしゃる通りです。 VBを始めて日が浅く、現在はいろんな方のお知恵を拝借しながら勉強しているところです。もっと勉強しますね。

関連するQ&A

専門家に質問してみよう