Add code at cursor position

footoo

Well-known Member
Joined
Sep 21, 2016
Messages
3,644
Office Version
  1. 365
Platform
  1. Windows
The following procedure adds code to the active module at line 3.
How to add code to the active module at the cursor position?
VBA Code:
Sub AddCode()

Dim wb As Workbook: Set wb = ActiveWorkbook
Dim xPro As VBIDE.VBProject
Dim xCom As VBIDE.VBComponent
Dim xMod As VBIDE.CodeModule

Set xPro = wb.VBProject
Set xCom = xPro.VBComponents(Application.VBE.ActiveCodePane.CodeModule.Name)
Set xMod = xCom.CodeModule

xMod.InsertLines 3, "Dim rng as range" & vbCrLf & _
    "Set rng = Range([A2], Cells(Rows.Count,""A"").end(3))" & vbCrLf

End Sub
 

Excel Facts

How can you turn a range sideways?
Copy the range. Select a blank cell. Right-click, Paste Special, then choose Transpose.
A shortcut is probably to combine Delete and Add ... rather than Insert ...
 
Upvote 0
Sorry for not being clear ...

Since you are Adding Code and just insert an instruction does not appear feasible ...

The Module which you want to modify ... can be Deleted ...and Re-Created including the initial modification you had planned to insert ...

Hope this clarifies
 
Upvote 0
Thanks but that would be more complicated than what I am doing at present :
I have a userform with a listbox.
When an item on the listbox is selected, the code attached to that item is copied to the clipboard.
Then it is manually pasted to the macro.
It would nice to have the paste automated, but that involves pasting at the cursor position.

I want to do the same as an add-in available at Automacro - Download
I don’t want to use that add-in since it’s quite expensive.
 
Upvote 0
To get around your difficulty, couldn't you have your AddCode include a Select Case mirroring precisely the specific items in your List Box ...
 
Upvote 0
But how do I programmatically paste to the cursor position in a macro?
 
Upvote 0
I worked it out :
VBA Code:
Sub AddCode()

Dim wb As Workbook: Set wb = ActiveWorkbook
Dim xPro As VBIDE.VBProject
Dim xCom As VBIDE.VBComponent
Dim xMod As VBIDE.CodeModule

Set xPro = wb.VBProject
Set xCom = xPro.VBComponents(Application.VBE.ActiveCodePane.CodeModule.Name)
Set xMod = xCom.CodeModule

Dim startline&, startcol&, endline&, endcol&
Application.VBE.ActiveCodePane.GetSelection startline, startcol, endline, endcol

xMod.InsertLines startline, "Dim rng as range" & vbCrLf & _
    "Set rng = Range([A2], Cells(Rows.Count,""A"").end(3))" & vbCrLf

End Sub
 
Upvote 0
Solution

Forum statistics

Threads
1,223,228
Messages
6,170,876
Members
452,363
Latest member
merico17

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top