[[20230615102806]] 『ワークシート名の部分一致(VBA)』(うまうま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ワークシート名の部分一致(VBA)』(うまうま)

毎々お世話になります。

ワークシート名の最後が「成績」で終わるシートに対して、
C列(筆記)とD列(実技)の値がどちらも80点以上の場合、
E列(評価)に「優」と表示させたいです。

以下のようにしてみましたが、マクロが止まりません。
シート、データともにせいぜい10個くらいなのですが、
どのように修正したらよいのか添削をお願いできませんでしょうか。

Sub 成績評価_全クラス()

     Dim i As Long
      Dim n As Long
    For n = 1 To Worksheets.Count
    For i = 4 To Worksheets(n).Range("C4").End(xlDown).Row

    If Right(Worksheets(n).Name, 2) = "成績" And Worksheets(n).Cells(i, 3) >= 80 And Worksheets(n).Cells(i, 4) >= 80 Then
       Worksheets(n).Cells(i, 5) = "優"

        ElseIf Worksheets(n).Cells(i, 3) < 80 And Worksheets(n).Cells(i, 4) < 80 Then
        Worksheets(n).Cells(i, 5) = ""
   End If
  Next
  Next

End Sub

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 ホントはマクロが止まらない原因の方を探るべきなんでしょうけど、とりあえずは
 >      For i = 4 To Worksheets(n).Range("C4").End(xlDown).Row
 の下に↓の様なループ脱出措置を入れておくとか
            If i > Worksheets(n).Cells.SpecialCells(xlCellTypeLastCell).Row Then Exit For

(白茶) 2023/06/15(木) 11:17:18


修正もいいですが、
どこが想定と違うのか、自身で探すことが1番重要ですよ。
(デバッグといいます)
下のサイトを参考にしてください。

https://www.excelspeedup.com/vbadebug/
(tkit) 2023/06/15(木) 11:18:32


 それこそシート名の最後が成績の時だけ
 >For i = 4 To Worksheets(n).Range("C4").End(xlDown).Row
 以降を実行しては?
(ねむねむ) 2023/06/15(木) 11:36:50

 提示のマクロは、ほぼ出来ていると思うのですが

 うまうま先生〜 もしだけど 優、良、可、不可 とか必要になったら
 どうするのかな? いらないのかな?

 その書き方だと、何か辛いな〜と私は個人的に
 思います。

 動けば、先生の好きなように書くのが一番ですが^^;
 サンプルマクロを試すならBOOKを複製してください。

 Sub 成績評価_Sample()

    Dim ws As Worksheet
    Dim i As Long, LastR As Long

    For Each ws In ThisWorkbook.Sheets
        If Right(ws.Name, 2) = "成績" Then
            With ws
                LastR = .Cells(.Rows.Count, 3).End(xlUp).Row
                For i = 4 To LastR
                    Select Case True
                        Case .Cells(i, 3) >= 80 And .Cells(i, 4) >= 80
                            .Cells(i, 5) = "優"
                        Case Else
                            .Cells(i, 5) = ""
                    End Select
                Next i
            End With
        End If
    Next

 End Sub

 ※ちゃんと、動作しなかったらごめんね。(o_ _)o
  [退場] λ…………トボトボ
(あみな) 2023/06/15(木) 12:29:12

 うまうま先生〜忘れ物しました。^^;

 処理速度が遅く気になるようでしたら
 Application.ScreenUpdating をいれてくださいね。

 参考URL
http://officetanaka.net/excel/vba/speed/s1.htm
(あみな) 2023/06/15(木) 12:40:52

みなさま、ありがとうございました。

通信教育の提出物で困っているところでした。
SpecialCells(xlCellTypeLastCell) や、Case をレッスンで習わなかったので
初心者For&Ifレベルでも出来るのかと思っておりました。

奥深しVBA、そして、なぜいきなりむずいんだ通信教育。

デバッグ含め、しばし復習に励みます。
頭から煙出てます。

(うまうま) 2023/06/15(木) 14:09:13


 ゚+.(・∀・)◞♡ ⁾⁾.+゚。oO( アイスノン、あげるよォ)				

 因みに、通信教育で習ってないのに Select Case 文で				
 宿題を提出して怒られても…私は、知りませんよォ。				

 (σ・∀・。)まぁ良いか…ネットで調べましたにしとけば

 ところでデバッグ作業は、ちゃんとできましたかぁ?
 頑張ってねェー(*p'∀'q)ふぁいち♪

 [ バイバーイ (*´︶`*)ノ "マタネー♪] λ…………トボトボ
(あみな) 2023/06/16(金) 14:22:59

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.