同じ文字を下方向へnセル分貼り付ける
例えばこんな文字がクリップボードにあります。
これをアクティブセルから下方向にnセル分貼り付けるマクロを作ってみました。
アクティブセルから下方向に123セル分貼り付けてみます。マクロを実行したあとに表示されるInputBoxに「123」を入力しOK。
このようにアクティブセルがA1ならA123までクリップボードの文字が貼り付けられました。
結合セルにも貼り付けできます。(結合セルを1セルとみなす)
非表示セルは飛ばして貼り付けします。(可視セルのみ貼り付ける)
コードを少し変えれば右方向、左方向、上方向になりますが、今のところ使う場面がないのでやめときます。
----------------------
Sub 同じ文字を下方向へnセル分貼り付ける()
'Microsoft Forms 2.0 Object Libraryを参照設定して下さい
'クリップボードのデータを丸ごと1セルに貼り付ける処理をn回繰り返します
'結合セルは1セルとしてカウントします
'非表示セルは1セルとしてカウントしません(つまり可視セルのみに貼り付け)
Dim Dobj As DataObject
Dim V As Variant
Dim i As Integer
Dim Y As Integer
Dim X As Integer
Dim YE As Variant
YE = Application.InputBox(Prompt:="下方向へ何セル分貼り付けますか?", Type:=1)
If TypeName(YE) = "Boolean" Then
Exit Sub
End If
Set Dobj = New DataObject
With Dobj
.GetFromClipboard
On Error Resume Next
V = .GetText
On Error GoTo 0
End With
If Not IsEmpty(V) Then
i = 1
Y = ActiveCell.Row
X = ActiveCell.Column
Do While i <= YE
If Cells(Y, X).Address = Cells(Y, X).MergeArea(1).Address _
And Rows(Y).Hidden = False Then
Cells(Y, X).Value = V
Y = Y + 1
i = i + 1
Else
Y = Y + 1
End If
Loop
Else
MsgBox "クリップボードにデータがありません!"
End If
End Sub
----------------------
※SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存しやり直しのできる状態にしておいて下さい。標準モジュールにコードを貼り付けてマクロを使用する方法はこちら。
※上記のマクロは外部ライブラリを使用します。VBEでMicrosoft Forms 2.0 Object Libraryを参照設定して下さい(ツール→参照設定→参照からWindows\System32\FM20.DLLを選択)。参照設定の方法はこちら。