エクセルで楽々校務

学校現場で使えるエクセルファイルや小技の紹介をしています。掘り出し物があるかもしれません。あと、今までの実践での疑問点もつぶやきます。

【自作ソフト】児童生徒の発言回数をカウントできるエクセルフォーム

名簿にチェックした方が手っ取り早いかもしれませんが、

発言回数をカウントできるフォームを作ってみました。

座席に氏名が入って、プラス・マイナス両方できる仕様です。

続きを読む

VBA:規則的な飛び飛びセルにoffsetで配列的にカウントを書き込む

学校で使う書類はだいたい行列数が決まっているものが多いので、動的な配列でなくてもだいたい片付きます。

ずっと配列で考えようとしていたのですが、offsetを変数にしてループさせると自由度が高まる気がしたので、備忘録として書いておきます。

f:id:exeladmin:20200725010323p:plain

こんな感じのことができます。2行3列飛びのセルに1000行までカウントを書き込みました。スピード的には問題ない速さで書き込めました。

for c~の行 と for r~ の行 を入れ替えるとカウント方向を変えられます。

なんとなくいろいろ応用がきくマクロだと思います。

以下、コードです。標準モジュールに書きました。

--------------------------------------------

Option Explicit

Sub ■規則的な飛び飛びセルにカウントを書き込む()

Dim r, c, i As Long
Dim rng As Range

Application.ScreenUpdating = False

For c = 0 To 12 Step 3   '列3飛び★
For r = 0 To 1000 Step 2 '行2飛び★
Set rng = Range("B2").offset(r, c) 'B2セルが起点'■offsetを変数

    'rng空白の場合カウント(★For行の入れ替えでカウント方向変えられる)
    If rng.Value = "" Then
        rng.Value = i + 1 'カウント
        rng.Interior.ColorIndex = 4 '緑       
        i = i + 1

    'rngを空白に戻す
    ElseIf rng.Value <> "" Then
        rng.Clear
    End If

Next
Next

Application.ScreenUpdating = True

End Sub

--------------------------------------------------

ちょっと面白いかなと思ったので書いてみました。

では、また(^^)/

VBA:シート変更でユーザーフォームを閉じるマクロ

雨が降り続いています。連休もお家で過ごしてる方結構いらっしゃると思います。

さて、かゆいところに手が届くマクロです。

VBAのユーザーフォームは、intersectを使って、指定セルクリックで

フォームを展開できますが、シートを変えたときに閉じたい時があります。

でもなぜか、残ってしまう・・・。

こんなとき、VBAのThisWorkbook(クラスモジュール)内に

次のコードを書くとフォームを閉じることができます。

案外、ネットに出ていなかったので備忘録として書いておきます。

=================================================
'シート変更でユーザーフォームを閉じる処理(ThisWorkbookに記述)
Private Sub workbook_sheetactivate(ByVal sh As Object)

    If sh.Name Like "*" Then ’シート名が変わったら
        Unload UserForm1  '閉じたいユーザーフォーム名
         'Unload UserForm2
    End If
End Sub
'=================================================

 

では、また(^^)/