Excel:使用VBA

时间:2015-06-04 08:27:50

标签: excel vba

我正在寻求所有excel VBA专家的帮助。

我已附上excel文件以供参考。

在“输入”表格中,有一个生产计划,将在提交按钮点击时生成。同样的时间表也必须在“输出”表中进行COPIED。但我无法将其粘贴到所需位置(蓝色突出显示区域)。

我要保留与年份相对应的相关数据并清除其余部分的另一个挑战。 这意味着假设它已有34年的时间,现在如果我再用20年生成它,它将把I级和II级的值保持到20年,并清除其余部分。

同样必须在输出表中。

有些人请尽早帮忙。

谢谢和问候,

桑托什

Submit_Click中的代码:

**Sub Submit_Click()
`enter code here`Dim no_years As Integer
Dim i_val As Integer
Range("c10").Activate

ActiveCell.EntireRow.Clear

ActiveCell = Range("b3").Value
no_years = Range("b4").Value
i_val = Range("b5").Value


Do While no_years > 0
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = DateAdd("YYYY", i_val, ActiveCell.Offset(0, -1).Value)

no_years = no_years - 1

Loop

' copy production schedule calender to all sheets
ActiveCell.EntireRow.Copy Destination:=Sheets("Output").Range("A" & Rows.Count).End(xlUp).Offset(1)

MsgBox ("Production schedule calendar generated")
End Sub**

3 个答案:

答案 0 :(得分:0)

执行此操作的简便方法:

ActiveSheet.Rows("1:1").Copy
Sheets("Output").Paste

这是你要找的吗?

答案 1 :(得分:0)

我不确定你想要的位置是什么意思?它是OUTPUT工作表的第一列吗?我只是增强了你当前的代码。关于第二个挑战,我完全不明白你想要表达什么。也许您应该打印屏幕或发送excel文件,以便我可以查看它。

Option Explicit
Dim CurrentWorkbook As Workbook
Dim InputWorksheet As Worksheet
Dim OutputWorksheet As Worksheet

Sub Submit_Click()

Set CurrentWorkbook = Workbooks(ActiveWorkbook.Name)
Set InputWorksheet = CurrentWorkbook.Sheets("Input")
Set OutputWorksheet = CurrentWorkbook.Sheets("Output")

Dim NumberOfYear As Long
Dim IntervalOfYear As Long
Dim ColumShift As Long

ColumShift = 1
InputWorksheet.Range("c10").EntireRow.Clear
InputWorksheet.Range("c10").Value = InputWorksheet.Range("B3").Value

NumberOfYear = InputWorksheet.Range("b4").Value
IntervalOfYear = InputWorksheet.Range("b5").Value

Do While NumberOfYear > 0
InputWorksheet.Range("c10").Offset(0, ColumShift).Value = DateAdd("YYYY", IntervalOfYear, InputWorksheet.Range("c10").Value)
NumberOfYear = NumberOfYear - 1
ColumShift = ColumShift + 1
Loop

' copy production schedule calender to all sheets
ActiveCell.EntireRow.Copy Destination:=Sheets("Output").Range("A" & Rows.Count).End(xlUp).Offset(1)

MsgBox ("Production schedule calendar generated")
End Sub

答案 2 :(得分:0)

我遇到类似的问题,并找到了解决方案: Acyou可以直接使用此范围“B§”(我假设您当前的工作表设置为Sht)

Sht.Cells(3, 2).EntireRow.Copy 'or the other way in comments
'ActiveCell = Range("b3").Value  
'ActiveCell.EntireRow.Copy
Sheets("Output")Range("A" & Rows.Count).PasteSpecial Paste:=xlValues