Копировать формулы из одного столбца в переменное количество столбцов - PullRequest
0 голосов
/ 25 сентября 2018

Я написал макрос, который вставляет переменное число столбцов слева от столбца F, основываясь на введенном числе в пользовательской форме, меньше 3. Т.е. если пользователь нажимает на 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 во вновь вставленные столбцы.Однако, независимо от того, как я пытаюсь запрограммировать функцию копирования + вставки, кажется, что она либо копирует разделы форума из столбцов А и В, либо копирует разделы форума справа от вновь вставленного диапазона.

Что лучшеспособ скопировать значения из столбца E во вновь создаваемые столбцы?

1 Ответ

0 голосов
/ 25 сентября 2018

Непонятно, что вы просите сделать, вы пытаетесь скопировать формулы или значения?т.е. вы хотите сохранить формулы / форматирование, или вы хотите сохранить только фактические значения, которые были рассчитаны в столбце 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...