Excelで解答用紙を作った時に、文字数指定の模範解答を書くのがダルすぎるから書いたコード

たいした話ではない。国語の先生で使いたいと思う人がいれば。

Excelで考査の解答用紙を作る。セル結合して作る。別にデータを処理するわけではないから、躊躇しない。

マス目も2セルを縦に結合して作る。しかし、模範解答を作る時、いちいちセルを移動して入力するのはダルい(今回、なんか文字数指定の問題をたくさん作っちゃったのでよりダルい)。だから次のコードをちゃちゃっと書いた。

新しいシートを作成して、そのシートモジュールに書く。

Option Explicit
Option Base 1

Sub SplitStringIntoEveryOtherCell()
    Dim targetRange As Range
    Set targetRange = Selection
    
    Dim inputString As String
    inputString = targetRange.Value
    
    '列の値をすべて消す
    targetRange.EntireColumn.ClearContents
    
    Dim currentRow As Long
    currentRow = targetRange.Row
    
    Dim i As Long
    For i = 1 To Len(inputString)
        Me.Cells(currentRow, targetRange.Column).Value = Mid(inputString, i, 1)
        currentRow = currentRow + 2
    Next i
    
    '分割されたテキストに加えて空白のセル1つを選択
    currentRow = currentRow - 1
    With Me
        .Range(.Cells(targetRange.Row, targetRange.Column), .Cells(currentRow, targetRange.Column)).Select
    End With
End Sub

このシートのどこかのセルに分割したい文字列を入力し、そのセルを選択した状態で実行すると、文字列が1セル飛ばしで1文字ずつ分割して縦方向のセルに入力され、一括で選択される。コピーして、数式貼り付けをする。

シートにこのマクロを設定したボタンを作っておこう。

いいなと思ったら応援しよう!