私は、クリックしたい行にボタンを追加してExcelのスプレッドシートを作成し、その行のコピーをとり、複製します下に。Excel VBAボタンを押した場所に基づいて行を追加しないで新しい行スクリプトを追加する
何らかの理由で、ボタンをクリックした行を選択していないように見えますが、カーソルが間違った行がコピーされていることを意味します。
ボタンを押したばかりの場所でアクティブなセルを作成する方法はありますか?事前に
Sub InsertRows()
Dim x As Integer
x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1)
If x = False Then Exit Sub
ActiveCell.EntireRow.Copy
Range(ActiveCell, ActiveCell.Offset(x - 1, 0)).EntireRow.Insert Shift:=xlDown
Application.CutCopyMode = False
End Sub
感謝
テラン
EDIT
トーマスの助けを借りて、私の最終的な解決策。
わずかな違いは、ボタン自体も行だけでなくコピーできることです。
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
は、私は本当にあなたのMsgBoxオフセット収集をどうしようとしているのか理解していない:
Sub InsertRows()
Dim iRow As Integer
Dim x As Integer
Dim i As Integer
x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1)
iRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
If x = False Then Exit Sub
For i = 0 To (x - 1)
'Range(ActiveCell, ActiveCell.Offset(x - 1, 0)).EntireRow.Insert Shift:=xlDown
Range("A" & iRow).EntireRow.Copy
Range("A" & iRow + 1 + i).EntireRow.Insert Shift:=xlDown
Next i
Application.CutCopyMode = False
End Sub
どのようなボタンですか?フォームまたはActiveX? –
こんにちは - そのフォームボタン。ありがとう –
ボタンをクリックしても、ActiveCellは変更されません。どのボタンが押されたのかは、Application.Caller –