こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VBプログラム エラーが出ます

Public Class Form1

Private number As Integer
Private rows As Integer
Private columns As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
If Not Integer.TryParse(TextBox1.Text, rows) OrElse _
Not Integer.TryParse(TextBox2.Text, columns) OrElse _
Not Integer.TryParse(TextBox3.Text, number) Then
MessageBox.Show("数字で入力してください", Me.Text, MessageBoxButtons.OK,
MessageBoxIcon.Error)
Exit Sub
End If

Me.Bounds = New Rectangle(10, 10, 1300, 800)

Dim cnt As Integer = 0

For k As Integer = 1 To number
For i As Integer = 1 To rows
For j As Integer = 1 To columns
Dim tb As TextBox = New TextBox()
cnt += 1
tb.Name = "tb" + cnt.ToString()
Me.Controls.Add(tb)
tb.Top = (i - 1) * 30 + 80
tb.Left = (j - 1) * 60 + 70 * (columns * (k - 1)) +
10
tb.Width = 50
Next
Next
Next


End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Dim sum As Double
Dim cnt As Integer = 0

For i As Integer = 1 To rows
For j As Integer = 1 To columns
Dim tb As TextBox = New TextBox()
cnt += 1 : If cnt > rows * columns Then cnt = 1

tb.Name = "tbA" + cnt.ToString
Me.Controls.Add(tb)
tb.Top = (i - 1) * 30 + (80 + 40 * rows)
tb.Left = (j - 1) * 60 + 10
tb.Width = 40
sum = 0

For k As Integer = 1 To number
sum += Double.Parse(CType(Me.Controls("tb" + (cnt + (rows * columns * k-1))).ToString(), TextBox).Text)    エラー

Next
tb.Text = sum.ToString()
Next
Next


End Sub



Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Do Until Me.Controls.Count <= 6
For Each tbD As Object In Me.Controls
If CType(tbD, Control).Name Like "tb*" Then Me.Controls.
Remove(tbD)
Next
Loop


End Sub
End Class




エラーと書いている箇所
どう直したらよいのでしょうか。
縮小変換しないで呼び出されるアクセス可能なitemがないためオーバーロードの解決に失敗しました
と出ます。

あとwindowsの画面の大きさを入力される値が小さければ少し小さいwindowsになるように変えたいのですがどうしたよいのでしょう。

投稿日時 - 2013-06-24 20:58:52

QNo.8148227

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

sum += Integer.Parse(CType(Me.Controls("tb" + (cnt + (rows * columns * (k - 1))).ToString()), TextBox).Text)

カッコの閉じる位置が問題だったのですよ。

知恵袋の質問が削除されているので
2つ目の方と合わせて既に解決したみたいですね。

投稿日時 - 2013-06-25 07:03:46

ANo.1

tb.Name = "tbA" + cnt.ToString という名前で定義しているようですが、参照するときは、tbで参照しています。

あと、この場合コントロール名で検索を掛けているのでFindメソッドを利用する必要があるでしょう。
http://dobon.net/vb/dotnet/control/findcontrolbyname.html

>あとwindowsの画面の大きさを入力される値が小さければ少し小さいwindowsになるように変えたい
申し訳ありませんが、基準がわからないので回答できません。
数字としての値か、テキストボックスに入力された文字列(数字を入力するでしょうけれど)の長さか…。

投稿日時 - 2013-06-24 21:54:15