我编写了一个宏,该宏根据在用户表单中输入的数字(小于3)在F列的左侧插入了可变数目的列。即,如果用户输入6,则该宏会将3列添加到F列的左侧(原始F,G和H列包含其他数据)。
'Code for "done" button in months prompt
Public Sub Done_Button_Click()
Dim ColumnNum%
Dim xNo As Variant
Application.ScreenUpdating = False
For Each Worksheet In Worksheets
Worksheet.Unprotect
Next Worksheet
'refernces column "F"
xNo = 6
'References user input from text box (number of months)
y = Add_Columns.Months_Input.Value
For i = 1 To y - 3
ThisWorkbook.Sheets("Input").Columns(xNo).Insert Shift:=xlRight
lastColumn = ActiveSheet.Cells(10, Columns.Count).End(xlToLeft).Column - 3
'Move to next column
xNo = xNo + 1
Next i
'Hide prompt
Unload Me
Application.ScreenUpdating = False
'Protect All Sheets
On Error Resume Next
Worksheets("DATA").Protect
Worksheets("Input").Protect
Worksheets("Output").Protect
Worksheets("Chart").Protect
'Jump Back to Input Sheet
Sheets("Input").Select
Range("A1").Select
'Save Workbook
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub
'User input for number of months
Public Sub Months_Input_Change()
Dim y As String
y = Add_Columns.Months_Input.Value
End Sub
'Tells prompt to reference cell B5 for number of months
Private Sub Userform_Activate()
CMiC_Months.Value = Format(ActiveSheet.Range("B5").Value, "0.0")
With Add_Columns
.Top = Application.Top + 350
.Left = Application.Left + 350
End With
End Sub
然后,我要将论坛从E列复制到新插入的列。但是,无论我如何尝试对copy + paste函数进行编程,似乎都可以从A和B列中复制论坛,也可以在论坛中复制到新插入范围的右侧。
将值从E列复制到新创建的列的最佳方法是什么?
答案 0 :(得分:0)
目前尚不清楚您要做什么,是否要复制公式或值?即您要保留公式/格式,还是只保留在E列中计算出的实际值-我认为您需要公式。但这是两种解决方案:
然后,我要将论坛从E列复制到新插入的列。
For i = 1 To y - 3
ThisWorkbook.Sheets("Input").Range("E:E").Copy
ThisWorkbook.Sheets("Input").Columns(xNo).Insert Shift:=xlRight
lastColumn = ActiveSheet.Cells(10, Columns.Count).End(xlToLeft).Column - 3
'Move to next column
xNo = xNo + 1
Next i
将值从E列复制到新创建的列的最佳方法是什么?
For i = 1 To y - 3
ThisWorkbook.Sheets("Input").Columns(xNo).Insert Shift:=xlRight
ThisWorkbook.Sheets("Input").Range("E:E").Copy
ThisWorkbook.Sheets("Input").Columns(xNo).PasteSpecial xlPasteValues
lastColumn = ActiveSheet.Cells(10, Columns.Count).End(xlToLeft).Column - 3
'Move to next column
xNo = xNo + 1
Next i