https://qiita.com/SoreKiita/items/3d2e6f2e573818d11e0b
qitaにあったスクショ自動貼り付けのコードについて質問です。
Declare Function OpenClipboard Lib "user32" (Optional ByVal hwnd As Long = 0) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Public LOCALOFFSET As Long
Sub AutoCapture()
'クリップボードを空にする。 OpenClipboard EmptyClipboard CloseClipboard MsgBox "AutoCaptureを開始します。" & vbNewLine & _ "①貼り付け開始位置にカーソルを置いて" & vbCr & _ "②貼り付け開始位置変える場合はリセットボタン押して" & vbCr & _ "③このマクロ起動中はエビデンスに全て貼付けられるから注意", vbInformation Dim CB As Variant Dim IsFirst As Boolean: IsFirst = True Do While True CB = Application.ClipboardFormats If StrConv(ActiveSheet.Cells(1, 1).Value, vbUpperCase) = "EXIT" Then GoTo Quit If CB(1) <> -1 Then For i = 1 To UBound(CB) If CB(i) = xlClipboardFormatBitmap Then If IsFirst = True Then ActiveSheet.Paste Destination:=ActiveCell IsFirst = False LOCALOFFSET = LOCALOFFSET + CInt(Sheets("メニュー").Range("kankaku").Value) Else ActiveSheet.Paste Destination:=ActiveCell.Offset(LOCALOFFSET, 0) LOCALOFFSET = LOCALOFFSET + CInt(Sheets("メニュー").Range("kankaku").Value) End If 'クリップボードを空にする。 OpenClipboard EmptyClipboard CloseClipboard End If Next i End If DoEvents Loop
Quit:
MsgBox "AutoCaptureを停止しました。", vbInformation
ActiveSheet.Cells(1, 1).ClearContents
End Sub
保守性を高める為に同じ処理を行う部分は変数化したいです。
例えば、上記のクリップボードを空にするコードを変数化したいですが、可能でしょうか?
また、変数宣言に関してですが、最上段に宣言と処理は書いた方が良いですよね?見やすいコードにしたいです。
エラートラップでgotoを使っているのですが、gotoは良くないと聞いたので別のやり方を教えて頂きたいです。
vbaに関して実務レベルで使えるような勉強ができるサイトや本など有れば教えて頂きたいです。
基礎の勉強は行ったのですが、それだけだとコード一つ一つの意味が分からないです。
皆さんはどうやって覚えたのでしょうか?
回答ではなく、調べ方を教えて頂けるだけでもありがたいです。よろしくお願いします!
回答3件
あなたの回答
tips
プレビュー