Excel VBA 串刺し入力(一定間隔おきに入力)

スポンサーリンク

excel_vba

データ分析の業務をしていると、コピーしたデータを数行・列おきに入力したいと思ったことはありませんか?私は何度もあります。でもexcelにはなぜかそういった機能がない。ということでVBAで簡単なマクロを作成しました。もし串刺し入力がしたいときはぜひ使ってみて下さい。

コード

指定行(感覚的には縦に串刺し)おきに入力

Public Sub Sample_ClipBoard_input_row()
Dim Str As String, tmp As Variant

'クリップボードを操作する為のDataObjectオブジェクトを用意する。
Dim CLPB As New DataObject

' DataObjectオブジェクトにクリップボードのデータを設定する。
CLPB.GetFromClipboard

' クリップボード内のテキストを取得する。
Str = CLPB.GetText
tmp = Split(Str, vbCrLf)

Dim i As Long, j As Long
j = 0

'ユーザーに串刺し間隔を指定してもらう
Dim stp As String

  Do
    stp = InputBox("何行おきに串刺し入力しますか。(数値のみ)")
    'キャンセルされた時中止
    If StrPtr(stp) = 0 Then Exit Sub
    If IsNumeric(stp) Then
    '数値が入力された時警告
    Else
        MsgBox "数値を入力してください。"
    End If
  Loop Until IsNumeric(stp)

'上記で指定された、数おきに入力。全て入力が終わったら終了。
For i = Selection(1).Row To Selection(Selection.Count).Row Step stp    
    If j < UBound(tmp) Then
        Cells(i, Selection(1).Column) = tmp(j)
        j = j + 1    
    Else
        Exit For    
    End If    
Next i
End Sub

指定列(感覚的には横に串刺し)おきに入力

Public Sub Sample_ClipBoard_input_col()
Dim Str As String, tmp As Variant

' クリップボードを操作する為のDataObjectオブジェクトを用意する。
Dim CLPB As New DataObject

' DataObjectオブジェクトにクリップボードのデータを設定する。
CLPB.GetFromClipboard

' クリップボード内のテキストを取得する。
Str = CLPB.GetText
tmp = Split(Str, vbCrLf)
Dim i As Long, j As Long
j = 0

'ユーザーに串刺し間隔を指定してもらう
Dim stp As String
  Do
    stp = InputBox("何行おきに串刺し入力しますか。(数値のみ)")
    'キャンセルされた時中止
    If StrPtr(stp) = 0 Then Exit Sub
    If IsNumeric(stp) Then
    '数値が入力された時警告
    Else
        MsgBox "数値を入力してください。"
    End If
  Loop Until IsNumeric(stp)

'上記で指定された、数おきに入力。全て入力が終わったら終了。
For i = Selection(1).Column To Selection(Selection.Count).Column Step stp
    If j < UBound(tmp) Then
        Cells(Selection(1).Row, i) = tmp(j)
        j = j + 1
    Else
        Exit For
    End If
Next i
End Sub

マクロを動かす前に

クリップボードを操作するDataObjectを使うためには、Microsoft Forms 2.0 Object Libraryを参照しなければエラーになってしまいます。以下の手順で設定しておきましょう。

開発 → VBE起動 → ツール → 参照設定 → Microsoft Forms 2.0 Object Libraryにチェックをいれる

参照設定説明画像
参照設定説明画像
参照設定説明画像

使い方

①串刺し入力したいデータをコピー(行に連続データ)

串刺しvba説明画像

②入力したい箇所を選択(少し広めに選んだ方が良い)

串刺しvba説明画像

③マクロを実行(今回は行方向のコード)。ダイアログに串刺し間隔を数字で指定。(今回は2行おきにする)

串刺しvba説明画像

④下記のように串刺し入力される。

串刺しvba説明画像

列方向のコードを実行したい場合は②の工程で横方向を選択範囲とする。

アドインダウンロード

アドインを作成しました。是非利用して見て下さい。(アドインの登録方法は以下を参照)

Excel vba の便利なツールをアドインに登録

コメント

タイトルとURLをコピーしました