2016-10-01 51 views
2

'這裏是第一次,所以感謝您的耐心!
我有多個片材的工作簿,我需要:如何VBA選擇一張牀單並將其複製到新的wb? '

1)的工作表中選擇第雙(索引和索引1)

2)將它們複製到新的工作簿

3)重命名與任何標籤是在引用單元格(如A1)張

4)然後重複工作簿中的每對錶的(幾十雙)

因爲我是很新的VBA(只拿了一個類),我很容易混淆。我迄今爲止唯一的部分是引用單元格A1將表格重命名爲該單元格中的任何文本字符串。我無法弄清楚其餘部分。我認爲它與worksheet.index或工作表(索引)和某種循環索引添加2,並激活該表和複製前的下一個:表1和2,然後表3和4等

Private Sub Worksheet_Calculate() 
Dim s As String 
s = "sheet 1" 
If Range("A1").Value <> "" Then 
    s = Range("A1").Value 
End If 
ActiveSheet.Name = s 
End Sub 

我明白它的方式,必須檢查單元格A1以確保它不爲空,因爲您無法命名帶有空值的工作表。在這一點上,其餘部分的用法和語法已經超出了我的視野,但我真的想學習並最終成爲這個社區的貢獻成員。我在工作中是全新的,只能兼職工作,所以給我的老闆提供解決方案可能意味着我變得永久。因此,大,大感謝!

+0

這些索引表以一致的方式命名?您需要編寫一些循環遍歷工作簿中所有可用工作表的代碼 - 或者使用工作表打開工作簿 - 標識包含要複製到的內容的工作表。除非這些表格被命名爲一致的方式,否則您可能會遇到問題。 – Lowpar

+0

是的,工作表均以g/l賬戶號碼命名:xx-xxxx-xxxx-xx。是不是有某種命令(方法?),但是,它會根據它們的INDEX號碼(1,2,3等)選擇表單? –

+0

你將不得不創建一個,但是如果與表單的名稱一致,你可以做 – Lowpar

回答

0
Option Explicit 

Private Sub Worksheet_Calculate() 
Dim s As String 
Dim ws As Worksheet 
Dim wsi As Worksheet 

Set wsi = Sheets("Sheet4")' You need to create a name for the sheet to paste into 

For Each ws In ActiveWorkbook.Worksheets 
If Not IsEmpty(ws.Range("A1")) and ws.name = "INDEXCOPY" Then 
    ws.Name = ws.Range("A1").Value 
    ws.Range("A1:" & ws.Range("A1").SpecialCells(xlCellTypeLastCell).Address).Copy _ 
    Destination:=wsi.Range("A1") 
End If 
Next ws 
End Sub 

此代碼將讓你開始,但是,你需要有一種方法,你要複製,與您要複製到索引卡片索引卡片來區分。你需要添加一個額外的if語句,參見上面的註釋。我會看這裏 - http://www.rondebruin.nl/win/s3/win006.htm

+0

非常感謝@Lowpar!我會給出一些想法,看看我能弄清楚什麼。我也會檢查你提供的鏈接。只是爲了確定我明白代碼在做什麼...... –

+0

設置wsi =表(「Sheet4」)將表單複製到'Sheet4'的位置或將其命名爲'Sheet4'?另外,我不明白ws.name = INDEXCOPY arg。這是否只是拳頭表?模塊說取範圍A1到最後一個單元格(xlCellTypeLastCell).Address)並複製它,放到wsi工作表中開始Range(「A1」),是否正確?如何將INDEX = 2表同時複製到與sheet1相同的新的wb中。所以,如果可能的話,這對於每一對都是真的。然後,NEXT將表格3和表格4複製到新的wb;表格5和6到NEW等 –

+0

我一直在研究,但由於容易混淆(特別是試圖找出INDEX部分),此時我還沒有準備好發佈任何答案或進一步評論。哈! –

相關問題