これは(COL b)において、各セルにボタンを追加すると同じ行の列Eからコンテンツをコピーするように設定されたアクション:
ここにボタンを作成する:
Sub Add_Buttons()
Dim wS As Worksheet
Dim LastRow As Long
Dim i As Long
Dim RgBtn As Range
Dim Btn As Shape
Set wS = ThisWorkbook.Sheets("Sheet1")
LastRow = wS.Range("E" & wS.Rows.Count).End(xlUp).Row
For i = 2 To LastRow
Set RgBtn = wS.Cells(i, 2)
Set Btn = wS.Shapes.AddFormControl(xlButtonControl, _
RgBtn.Left, RgBtn.Top, RgBtn.Width, RgBtn.Height)
With Btn
.OnAction = "'CopyColE " & i & "'"
.OLEFormat.Object.Text = "Copy test " & i
End With
Next i
End Sub
、クリップボードにCOL Eの内容を置くためのコード:
Public Sub CopyColE(ByVal RowIndex As Long)
Dim wS As Worksheet
Set wS = ThisWorkbook.Sheets("Sheet1")
Call CopyText(wS.Range("E" & RowIndex).Value)
End Sub
Public Sub CopyText(Text As String)
Dim MSForms_DataObject As Object
Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
MSForms_DataObject.SetText Text
MSForms_DataObject.PutInClipboard
Set MSForms_DataObject = Nothing
End Sub
そして、以前に作成したすべてのボタンを削除するための手順
Sub Delete_All_Buttons()
Dim wS As Worksheet
Dim Btn As Shape
Set wS = ThisWorkbook.Sheets("Sheet1")
For Each Btn In wS.Shapes
Btn.Delete
Next Btn
End Sub
(新しいボタンを生成する前に使用するように!)
Sheetをパラメータとして渡す方法が見つかりませんでしたので、今度は2回定義する必要があります(Add_Buttons
とCopyColE
)
偉大なもの!それを試してみる。しかし、ボタンをB列に置くとはどこですか? 'LastRow'の割り当てで? thx – tzippy
'wS.Cells(i、2)'それは '2';)私はちょうどawesomely新しい編集でテストしました^^ – R3uK
ああ私は見る! :)なぜ私は2で始まるのですか?もう1つの答えでは、ボタンは2行目から始まります。なぜでしょうか? – tzippy