• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB、教えてください。)

VBでラベルの表示を連番で行う方法

このQ&Aのポイント
  • VBで縦に並んだラベルに連番を表示する方法について教えてください。
  • ラベルには「label0」「label1」「label2」「label3」「label4」という風に表示したいです。
  • また、表示する数字は連番の10の倍数としたいです。

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

  • ベストアンサー
  • WOPR
  • ベストアンサー率29% (38/131)
回答No.6

ANo.5 です 人が良いのか悪いのか… > …って、自分でも努力しろって話ですよね。。。。 こう素直に書かれると何とかしたくなる。 まず、超能力者ではないので状況やエラーの内容でも書いていてくれれば助かります。 おそらく 3 択 1. ラベル名が違う ご質問どおり、lblMessage0 ~ 4 で作成しました。 lblMessage1 ~ 5 でラベルを作成していたらエラーになりますよ。 最初の実行時に m = 0 なので、指定の名前が lblMessage0 になるからです。 2. 型判定の問題 Me.Controls("lblMessage" & m.ToString).Text = (10 * m).ToString ようするに、Text という文字列に 10 * m という数値を入れるなということです。 3. 何度か押していて m の値が 4 を超える なんのエラーチェックも入れてないので、何度か押していると m = 5 となり、lblMessage5.Text に値を入れようとします。 そんなコントロールは無いのでエラーが出ます。 以下余談です 命令も基本的な部分は分かっている。フォームにコントロールも置ける。変数も宣言は分かっている。 という段階かと思います。 私だって最初は初心者だったので偉そうなことを言う気はさらさら無いのですが、次はそろそろ変数がどのように変化していくのかをイメージされる時期かな。どうやら課題もそんな感じだし。 この変数は何を意味しているのか。 この変数は今、何の値が入っているのか。 この意識があると、配列や List<T> もへの九番で分かります。 ようするに、Dim index As Integer ってすると、index って変数の中には 1 つしか値が入らないわけですよ。 ところがプログラムをしていると index って意味なんだけど複数欲しい場合が出てくるわけですよね。 すると最初に考えるのは以下のコードになるわけです。 Dim index0 As Integer Dim index1 As Integer それじゃぁ、今回の質問と同じ疑問が出るわけ。index + x みたいな指定はできないのかな。 そこで配列の登場。Dim index(1) As Integer と宣言するんです。 すると、index(0) = 3 や index(1) = 5 って複数の値が入るようになる。 そうなると m = 1 index(m) = 5 ってやると、index(1) = 5 と同じ意味だし For i = 0 To 1   index(i) = 4 Next ってやると、index(0) = 4, index(1) = 4 と同じこと すると今度は最初から Dim index(1) As Integer って固定で配列を作るんじゃなくて Dim index(x) As Integer ってならないのって疑問が沸きます。 ま、Dim index() As Integer でもいいんだけど、ReDim じゃなくてもっとスマートに扱いたいってなると、コレクションや List<T> が出てくる。これは自分で勉強。 最初に見たのが今回みたいな「教えて下さい」って質問だったら面倒なので無視するんですが、最初に見た質問の時に一所懸命コードを書いていたのでなんだかフォローしたくなったんだわ。 きついこと書く時もあるやろけど、応援してるよ。

qc4
質問者

補足

もうしわけありません。 近況ですが、この問題、まだ解決できていません。 解決しましたらご報告させてください。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • WOPR
  • ベストアンサー率29% (38/131)
回答No.5

Public Class Form1   Dim m As Integer = 0   Private Sub Buttn1_Click(...     Me.Controls("lblMessage" & m).Text = 10 * m     m = m + 1   End Sub End Class 質問を直訳するとこの回答だな。

qc4
質問者

お礼

>Me.Controls("lblMessage" & m).Text = 10 * m ここで引っかかってしまいます。 でも私がほしい答えっぽいんでけどね。 …って、自分でも努力しろって話ですよね。。。。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

あらあら、前回の配列変数から、またレベルをもう少し上げてしまって大丈夫なのですか? 基本的に、VB.Net では、今までのコントロール配列はなくなっているわけですね。前回、こちらは暫定球を出しておいたのに、それ以上のレベルを求めても、どうなのかなって思います。 注意:Labelのオブジェクト名は、Label0 からではなく、Label1 からですから、もし違うようでしたら、Form1_Load の起動イベントを書き換えてください。i の初期値は、0 ですから、Button 側のコードは変更の必要はないはずです。 m = 0 は、初期値は、0 ですから、そのままにします。 '// Public Class Form1   Private _Labels As New List(Of Label)   Dim m As Integer   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load     Me._Labels.Add(Me.Label1)     Me._Labels.Add(Me.Label2)     Me._Labels.Add(Me.Label3)     Me._Labels.Add(Me.Label4)     Me._Labels.Add(Me.Label5)   End Sub   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     Dim i As Integer     i = m Mod 5     Me._Labels(i).Text = (m + 1) * 10     m = m + 1   End Sub End Class

qc4
質問者

お礼

ありがとうございます。 いえ、正直言って大丈夫じゃありません。 そんな難しいことだとは思わずに、ちょちょっとできるものかと…。 ご迷惑おかけしました。 いつもありがとうございます。

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

VB6ならコントロール配列を利用すればいかがですか コントロール配列 http://homepage1.nifty.com/rucio/main/shokyu/jugyou20.htm VB6でなければこちらを http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_02/vb2005m_02_01.html

qc4
質問者

お礼

せっかくリンク貼ってくださったのに、ちょっと難しかったです。 ポンと一言回答がもらえるたぐいのものでないことが理解できまして、まあそれだけでも…。 バージョンを記してなかったのは失礼しました。 2008になります。

すると、全ての回答が全文表示されます。
  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

参考) ラベルに表示される値を処理に応じて変えたいのではないですよね?。 ラベル名.caption=”XXXX” ラベルに表示される値を随時設定できます。 この際、これも学習してください。

qc4
質問者

お礼

captionがわかりませんでした…。 申し訳ないです。

すると、全ての回答が全文表示されます。
  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

配列宣言を勉強しましょう。 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard27.htm やりたい事はこのまんまだと思いますよ。

qc4
質問者

お礼

ありがとうございます。 ちょっと私には敷居が高かったようです(泣

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • 生命保険とは、先進医療(無保険適用)に対しても必要なのか疑問に思う人も多いです。
  • 保険に毎月3万円12ヶ月10年間掛けていて、その間にたった1度の日帰り大腸ポリープ検査で5万円の費用がかかりました。
  • この場合、保険に掛けた合計金額が損になったのか、普通の貯金の方が良かったのか、検討する必要があります。
回答を見る

専門家に質問してみよう