i2i無料WEBパーツ
FC2ブログ

VBA 選択範囲の重複を省きクリップボードにコピー

VBA
04 /07 2012
こんにちは。

流浪のSE・PGをやってますと、運用フェーズの案件に携わる機会がたまにあります。

データメンテナンスなんかをやっていて、エクセルでDistinctしたいなーという事が
よくあるので、選択範囲の重複を省き、クリップボードに貼り付けるエクセルのマクロをメモっておきます。


'<機能>
' 選択範囲の重複を省いた値をクリップボードに出力します。
'<戻り値>
' なし
'<説明>
' クリップボードへの貼り付けはsetClipBoadのコメントを参照
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Sub selectedDistinctToClipBoad()

Dim map As Object
Dim key As String
Dim value As String

'Map生成
Set map = CreateObject("Scripting.Dictionary")

For Each c In Selection

If c.Text <> "" And Not (map.Exists(c.Text)) Then
'マップに値を登録
Call map.Add(c.Text, c.Address)
'
value = value + c.Text + vbCrLf
End If

Next c
'クリップボードに設定します
setClipBoad (value)

End Sub


'<機能>
' 文字列をクリップボードに貼り付けます
'<戻り値>
' なし
'<説明>
' [ツール]→[参照設定]で「Microsoft Forms 2.0 Object Library」に
' チェックして使用する。
'[参照可能なライブラリ]のリストにない場合は[参照設定]
'ダイアログボックスで[参照]ボタンをクリックして
'「C:\Windows\system32\FM20.DLL」を選択する
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function setClipBoad(strValue As String)
Dim CB As New DataObject

If strValue = "" Then
Exit Function
Else
With CB
.SetText strValue
.PutInClipboard
End With
End If

End Function

コメント

非公開コメント

KevinJohnsonjp

札幌でSEやってる人の業務日誌。

↓こんなのも書いてたりします。
ホットペッパー KJさんのグルメ手帳『北○』の口コミ書きました