アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのVBAでシート2のA1に入っている文字をボタンを押すとアクティブセルにコピーできるようにしたいです。
また、シート2の結合したセル(B2・B3・C2・C3)をアクティブセルに貼り付ける方法も教えてください。
よろしくお願いいたします。

A 回答 (2件)

こんばんは。



自分が使うなら、どう作るかということで作ってみました。
だから、忠実に、ご質問者さんのご要望に叶うかどうかは分かりません。
ですから、無視なさっても、構いません。

ただ、これは、どちらかというと、ショートカットやQATがふさわしいような気がします。QATの場合は、カスタムプロパティに登録してからのコピーが良いと思います。

仕様:
フォームコントロールのボタン(*文末で、理由を述べます)で、
ボタンを押しますと、Sheet2 のA1 セルがコピーされます。
コピーは、書式を含めてですが、値やら、書式やらといろいろ注文がありましたら、
   ActiveCell.PasteSpecial xlPasteAll
xlPasteAll の部分を、任意に書き換えます(Helpにも出てきます)
次に、シフトキーを押しながら、ボタンを押しますと、ActiveCell が、結合セルでない限りは、B2を含めて、コピーします。
しかし、ActiveCell が、結合セルの場合は、結合セルは、解除され、通常のセルに戻ります。


'//標準モジュールがベター
Option Explicit
#If Win64 Then
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As _
Long) As Integer
#Else
Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) _
As Long
#End If
Private Const VK_CONTROL = &H10 'Shift_Key

Sub ボタン1_Click()
 With Worksheets("Sheet2")
  If GetAsyncKeyState(VK_CONTROL) = False Then
   If Not ActiveCell Is .Range("A1") Then
    .Range("A1").Copy
    ActiveCell.PasteSpecial xlPasteAll
   End If
  Else
   If ActiveCell.MergeCells Then
    ActiveCell.MergeCells = False
   ElseIf Not ActiveCell Is .Range("B2") Then
    .Range("B2").MergeArea.Copy
    ActiveCell.PasteSpecial xlPasteAll
   End If
  End If
 End With
End Sub
'//

*ActiveX コントロールか、フォームコントロールの違いなのですが、
#1さんは、ActiveX コントロールをお使いになっていますが、昨今の海外の情報で、ActiveX コントロールが不具合を起こすように言われているだけでなく、私のシート(Excel 2013 32bit)でも、まったく用をなさない時があります。フォームコントロールは、生き残っても、ActiveXコントロールは全滅状態の時を何度も繰り返して、今日のスタイルになっています。理由は、おそらくは、ActiveX コントロールの複雑な構造だからか、Excel用のActiveコントロールが、バージョンを上げる事に、減ってきているからではないかと思われますが、確たる証拠はありません。今後、上位バージョンでどう変わっていくのか、不明です。
    • good
    • 0
この回答へのお礼

本格的なプログラムと説明ありがとうございました!

お礼日時:2017/12/10 18:52

こんばんは!



>アクティブセルにコピーできるようにしたい・・・
アクティブセルはSheet2以外のセルなのでしょうか?

>ボタンを押すと・・・
アクティブになっているシート上にコマンドボタンを挿入するとします。

Private Sub CommandButton1_Click()
ActiveCell = Worksheets("Sheet2").Range("A1")
End Sub

ではどうでしょうか?

※ 「A1」部分はSheet2のA1が結合セルであっても問題ありません。
すなわち
>シート2の結合したセル(B2・B3・C2・C3)
は A1 を
B2・C2 に置き換えれば大丈夫だと思います。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2017/12/10 18:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!