Sub danzyo()
Dim sei
Dim tensu
Dim gouhi
Dim gyo
For gyo = 2 To 11
sei = Range("c" & gyo).Value
tensu = Range("d" & gyo).Value
gouhi = Range("h" & gyo).Value
If sei = "女性" Then
If tensu >= 70 Then
gouhi = "合格"
Else
gouhi = "不合格"
End If
Else
If tensu >= 80 Then
gouhi = "合格"
Else
gouhi = "不合格"
End If
End If
Next
End Sub
2019/06/19 07:45
小川 慶一さんのコメント
(コメントID: 6207)
矢口幸平さん:
疑問が生じたら、そこだけだけ残してあとは極力省いたコードを書いてみるのが解決のコツです。
以下に、今回確認したいことと関係ない部分は極力省いたコードを用意しました。(もっと省けますが)
これもやはり結果をエクセルシートに出力しないマクロです。 どうしてだか、わかりますか。
Sub danzyo_1()
Dim sei
Dim tensu
Dim gouhi
sei = Range("c3").Value
tensu = Range("d3").Value
gouhi = "合格"
End Sub
この内容を踏まえた上でコードを修正すると、下記の通りになるかと思います。 ----------------------------------- Sub danzyo() Dim gyo For gyo = 2 To 11
If Range("c" & gyo).Value = "女性" Then If Range("d" & gyo).Value >= 70 Then Range("h" & gyo).Value = "合格" Else Range("h" & gyo).Value = "不合格" End If Else If Range("d" & gyo).Value >= 80 Then Range("h" & gyo).Value = "合格" Else Range("h" & gyo).Value = "不合格" End If End If Next End Sub -----------------------------------
Sub danzyo_1()
Dim sei
Dim tensu
Dim gouhi
sei = Range("c3").Value
tensu = Range("d3").Value
gouhi = "合格"
Range("h3").Value = gouhi '[追加]
End Sub
Sub danzyo()
Dim sei
Dim tensu
Dim gouhi
Dim gyo
For gyo = 2 To 11
sei = Range("c" & gyo).Value
tensu = Range("d" & gyo).Value
'gouhi = Range("h" & gyo).Value '[不要]
If sei = "女性" Then
If tensu >= 70 Then
gouhi = "合格"
Else
gouhi = "不合格"
End If
Else
If tensu >= 80 Then
gouhi = "合格"
Else
gouhi = "不合格"
End If
End If
Range("h" & gyo).Value = gouhi '{追加]
Next
End Sub
Sub danzyo_1()
> Dim sei
> Dim tensu
> Dim gouhi
>
> sei = Range("c3").Value
> tensu = Range("d3").Value
>
> gouhi = "合格"
>
> Range("h3").Value = gouhi '[追加]
> End Sub
>
> Sub danzyo()
> Dim sei
> Dim tensu
> Dim gouhi
>
> Dim gyo
> For gyo = 2 To 11
> sei = Range("c" & gyo).Value
> tensu = Range("d" & gyo).Value
> 'gouhi = Range("h" & gyo).Value '[不要]
>
> If sei = "女性" Then
> If tensu >= 70 Then
> gouhi = "合格"
> Else
> gouhi = "不合格"
> End If
> Else
> If tensu >= 80 Then
> gouhi = "合格"
> Else
> gouhi = "不合格"
> End If
> End If
> Range("h" & gyo).Value = gouhi '{追加]
> Next
> End Sub
退会ユーザさんの投稿
(投稿ID: 4507)
ベーシックを終了してアドバンスドに移行予定でしたが
業務が繁忙であるため、6月末まではベーシックの復習中です。
本題にうつり、質問致します。
【質問】問題2について
下記コードを記入しても、合否結果が出力されません。
gouhi の変数に変換した途端出力されなくなりました。
そのため、この変数設定の仕方が良くないと推測されますが
何が悪いのかわからず、堂々巡りとなっております。
ご回答頂けると嬉しいです。
宜しくお願い致します。
ーーーーーーーーーーーーーー以下コードーーーーーーーーーーーー
小川 慶一さんのコメント
(コメントID: 6207)
疑問が生じたら、そこだけだけ残してあとは極力省いたコードを書いてみるのが解決のコツです。
以下に、今回確認したいことと関係ない部分は極力省いたコードを用意しました。(もっと省けますが)
これもやはり結果をエクセルシートに出力しないマクロです。
どうしてだか、わかりますか。
> ベーシックを終了してアドバンスドに移行予定でしたが業務が繁忙であるため、6月末まではベーシックの復習中です。
この問題を自力解決できない(というか、ひと目見て何が問題か分からない)ようですと、アドバンスドに進むには実力不足です。
6月末までと言わず、少なくとも全問もう一度解きなおすのが良いかと思います。
アドバンスドを楽しんで&有意義に学ぶには、ベーシックの動画16くらいまでのお題は「見た瞬間解ける」というくらいになっておいたほうがよいです。
アドバンスドに進まれても構いませんが、「しんどいな」と感じられたら、無理せずベーシックに戻って問題を解きなおしてください。
退会ユーザさんのコメント
(コメントID: 6212)
いつもお世話になります。
早速ご返信頂きありがとうございます。
問題は下記「'」で示した通りと考えました。
-----------------------------------
Sub danzyo01()
Dim sei
Dim tensu
Dim gouhi
sei = Range("c3").Value 'seiという変数をセルc3の値にする
tensu = Range("d3").Value 'tensuという変数をセルd3の値にする
gouhi = "合格" 'gouhiという変数を"合格"という値にする
End Sub
'Range("c3").Value=○○○ としないと、永久に値が出力されません
'そのため、変数を用いた事自体がいけなかったのかと考えます
-----------------------------------
この内容を踏まえた上でコードを修正すると、下記の通りになるかと思います。
-----------------------------------
Sub danzyo()
Dim gyo
For gyo = 2 To 11
If Range("c" & gyo).Value = "女性" Then
If Range("d" & gyo).Value >= 70 Then
Range("h" & gyo).Value = "合格"
Else
Range("h" & gyo).Value = "不合格"
End If
Else
If Range("d" & gyo).Value >= 80 Then
Range("h" & gyo).Value = "合格"
Else
Range("h" & gyo).Value = "不合格"
End If
End If
Next
End Sub
-----------------------------------
この問題をすらすら解けなかった事もあり、改めてベーシックをもう一度復習しようと考え直しました。
ベーシックの動画16くらいまでのお題は「見た瞬間解ける」というくらいになってから、アドバンスドに移行致します。
今後とも何卒宜しくお願い致します。
矢口 幸平
> 矢口幸平さん:
>
> 疑問が生じたら、そこだけだけ残してあとは極力省いたコードを書いてみるのが解決のコツです。
>
> 以下に、今回確認したいことと関係ない部分は極力省いたコードを用意しました。(もっと省けますが)
>
> これもやはり結果をエクセルシートに出力しないマクロです。
> どうしてだか、わかりますか。
>
>
>
> > ベーシックを終了してアドバンスドに移行予定でしたが業務が繁忙であるため、6月末まではベーシックの復習中です。
>
> この問題を自力解決できない(というか、ひと目見て何が問題か分からない)ようですと、アドバンスドに進むには実力不足です。
>
> 6月末までと言わず、少なくとも全問もう一度解きなおすのが良いかと思います。
> アドバンスドを楽しんで&有意義に学ぶには、ベーシックの動画16くらいまでのお題は「見た瞬間解ける」というくらいになっておいたほうがよいです。
>
> アドバンスドに進まれても構いませんが、「しんどいな」と感じられたら、無理せずベーシックに戻って問題を解きなおしてください。
>
小川 慶一さんのコメント
(コメントID: 6213)
そうですね。この回答内容だと、ベーシックでの練習がぜんぜん足りないと感じられます。
いただいたコード、僕からお題として出したコードとも、以下のようにすればぜんぜん問題なかったわけです。
それが分からず、「変数を用いた事自体がいけなかった」という結論になるのは、ひとえに、演習が足りないからです。
あと、「プロパティの設定」とか「プロパティの取得」とか、「変数への値の格納の方法」、「変数からの値の取り出しの方法」ときった基本的なことについてもさっぱり理解されていないようです。
基礎編講座本編についても復習されることを強く推奨します。
レジュメはすべて印刷して内容をチェックし、理解の漏れがないか?確認してください。
それから、再度、動画を全部みなおされることをおすすめします。
他人がいい加減にやっている(が、大切なこと)にきっちり取り組むからこそ、他人が得られないスキルを得ることができるのです。
ここは、きっちり取り組まれることをおすすめします。
退会ユーザさんのコメント
(コメントID: 6214)
早速の返信ありがとうございます。
そうですね。理解が著しく不足しているので、一から見直そうと思います。
夜分遅くの時間帯にご返信頂きありがとうございました。
今後とも何卒よろしくお願い致します。
矢口幸平
> 矢口幸平さん:
>
> そうですね。この回答内容だと、ベーシックでの練習がぜんぜん足りないと感じられます。
>
> いただいたコード、僕からお題として出したコードとも、以下のようにすればぜんぜん問題なかったわけです。
> それが分からず、「変数を用いた事自体がいけなかった」という結論になるのは、ひとえに、演習が足りないからです。
>
>
>
> あと、「プロパティの設定」とか「プロパティの取得」とか、「変数への値の格納の方法」、「変数からの値の取り出しの方法」ときった基本的なことについてもさっぱり理解されていないようです。
> 基礎編講座本編についても復習されることを強く推奨します。
>
> レジュメはすべて印刷して内容をチェックし、理解の漏れがないか?確認してください。
> それから、再度、動画を全部みなおされることをおすすめします。
>
> 他人がいい加減にやっている(が、大切なこと)にきっちり取り組むからこそ、他人が得られないスキルを得ることができるのです。
> ここは、きっちり取り組まれることをおすすめします。
>
>
小川 慶一さんのコメント
(コメントID: 6215)
応援しています。
基礎編第1章の手書きワークとか、とてもよいですよ。
ああいう、手を動かすワーク、とても大切です。実際にプログラムを書くということも同様です。
くり返しになりますが、他人がいい加減にやっている(が、大切なこと)にきっちり取り組むからこそ、他人が得られないスキルを得ることができるのです。
ここは、きっちり取り組まれることをおすすめします。