- ベストアンサー
繰り返しは苦手です。
毎回ヴィジュアルベーシックですね。最近自分(^^; Sheet1のB列に0か1の数字が入力されていて 値が0の場合は×、1の場合は○をC列に格納する。 ただし,for文を用いて5回の繰り返し処理として行うこと。って問題と Sheet2にもSheet1と同じデータが入力されていて Do-Loop文を使ってデータがなくなるまで繰り返す という考え方で行うこと。 という問題があるんですけど,繰り返しの処理が苦手で困っています。 このような問題の場合,どんなコードを記述したら良いですか? 教えて下さい!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
VB.NET で書いてみる。 ※思いつくまま書いたので、バグ混入の可能性大です。 前者の問題への解。 For iRow As Integer = 0 To 4 Dim oTemp As Object = Sheet(0).Cells(1, iRow).Text ←セルの内容値を取得 Select Case oTemp.ToString Case '0' Sheet(0).Cells(2, iRow).Text = '×' Case '1' Sheet(0).Cells(2, iRow).Text = '○' End Select Next 後者の問題への解。 Dim iRow As Integer = -1 Do While Not Sheet(1).Columns(1).Text.Trim.Equals(String.Empty) iRow += 1 Dim oTemp As Object = Sheet(0).Cells(1, iRow).Text ←セルの内容値を取得 Select Case oTemp.ToString Case '0' Sheet(0).Cells(2, iRow).Text = '×' Case '1' Sheet(0).Cells(2, iRow).Text = '○' End Select Loop アイデア的には、こんな感じかな。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>ヴィジュアルベーシックですね VB.NETやVBではなく、エクセルVBAの質問に当たります。 >Sheet1のB列に0か1の数字が入力 B列 i 行のセルの値は Cells(i,"B")で捉えられます。 >値が0の場合は×、1の場合は○をC列に格納する。 (CASE文など使うのが普通かも知れないが、初歩的に) If Cells(i,"B")="0" then Cells(i,"C")="X" If Cells(i,"B")="1" then Cells(i,"C")="○" >5回の繰り返し処理として For i=1 to 5 処理 Next i ーー Sub test01() For i = 1 To 5 If Cells(i, "B") = "0" Then Cells(i, "C") = "X" If Cells(i, "B") = "1" Then Cells(i, "C") = "○" Next i End Sub 後半 Sub test01() i = 1 Do While Cells(i, "B") <> "" If Cells(i, "B") = "0" Then Cells(i, "C") = "X" If Cells(i, "B") = "1" Then Cells(i, "C") = "○" i = i + 1 Loop MsgBox i - 1 End Sub >繰り返しの処理が苦手で困 経験不足(本などに載っている、VBA文のまね不足)だけだとおもう。
- khazad-lefty
- ベストアンサー率44% (296/668)
#ここの回答を写して課題として提出してるのかな? for i=0 to 9 (処理) next という文を例にとると、 for分ではループを一回回すたびにカウンタ変数(ここではi) が一つ増えていきます。 だから、列番号、行番号でセルの値を参照することができれば、 変数iを使って該当するセルの値をとることが出来るし、C列に計算結果を入れることは出来るでしょう。 で、Doを使う場合は自動的にカウントアップはおこなわれないので、 i=i+1 みたいな形で自分でカウントアップを行う必要がありますね。 そのあたりはたぶん教科書?かサンプルに載っていると思います。 普通の授業なら。