我是vba的新手,在stackoverflow指导的帮助下,我正在学习。 我试图复制四个不同范围的单元格(本质上是动态的,但都有相同的行号,但是列不同)(源书应该打开,用户可以按特定顺序选择范围),这样就可以了以相同的顺序粘贴到目标工作簿。 我无法附加示例源工作簿(将来的名称将更改)和目标工作簿,因为我是新手。 源书包含各种col like,slno,acct no,name,amt,ifsc,remarks,arrears等,并且行的数量可能正在变化。 目标书包含,只有四个列,例如,amt,acct no,name和ifsc在同一顺序中。
从源书中,我需要将acct,ifsc,name和amt col数据粘贴到目标工作簿中,即,amt,acct no,name和ifsc。
我使用这个论坛尝试了以下代码......
但是,它只将col a复制到g而不是动态。我希望,它可以询问所有四个范围的一些用户输入。
感谢..
Private Sub CommandButton1_Click()
Dim excel As excel.Application
Dim wb As excel.Workbook
Dim sht As excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set excel = CreateObject("excel.Application")
Set wb = excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Sheet1")
sht.Activate
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
wb.Close
End Sub
答案 0 :(得分:0)
如果您的代码有效,则可以通过在Range("A1").PasteSpecial Paste:=xlPasteValues
和wb.close
之间添加此代码来删除不需要的列。
Dim cel As Range
With ThisWorkbook.Sheets(1)
For Each cel In Intersect(.UsedRange, .[1:1])
If cel.Value2 = "" Or InStr(1, "amtacct nonameifsc", cel.Value2) = 0 Then
cel.EntireColumn.Delete
End If
Next
End With