2016-09-13 41 views
0

所以基本上我只是在2個小時前學習宏的excel。 所以我只是想從這門語言學到一些基礎知識,所以問題是我只想從No.Id的另一個工作簿獲得,並在列之間插入一個新列。 對於這個例子,我有數據這樣在1日的工作簿是在左邊,右邊是第二個工作簿 1st and 2nd Workbook從另一個文件宏中獲取價值excel

而在第二冊我要插入的列之間的新列,並把基於值No.Id後點擊CommandButton1的

所以第二個工作簿變成這樣After Macro

所以你能幫助我,並告訴我它是如何工作的? pleaseee ...:d

+1

一個解決的問題之一。瞭解如何打開其他工作簿,如何插入列等。然後,如果您遇到這些任務中的任何一個問題,請諮詢有關特定問題的幫助。 – arcadeprecinct

+0

如果基本命令像插入列並打開另一個工作簿,我可以這樣做,但我唯一的擔心是從另一個工作簿中獲取值,並使值與No.Id相同,就像圖片一樣。我的意思是它真的讓我感到沮喪:(。順便說一句,謝謝你的建議.. :) –

+0

這將是從其他工作簿複製值的任務之一。如果你可以打開另一個工作簿,它應該沒問題,因爲你只需要讀取和寫入單元格值? – arcadeprecinct

回答

0

嘗試:

Dim wsSource As Worksheet 
Set wsSource = ActiveWorkbook.Worksheet("NAME SOURCE SHEET") 
Dim wsOutput As Worksheet 
Set wsOutput = ActiveWorkbook.Worksheet("NAME OUTPUT SHEET") 
Dim ID as Range 
Dim FindID as Range 
Dim lRowSource as Integer 
Dim lRowOutput as Integer 

lRowSource = wsSource.Range("A" & Rows.Count).End(xlUp).row 
lRowOutput = wsSource.Range("A" & Rows.Count).End(xlUp).row 

With wsOutput 
    Range("B1").EntireColumn.Insert 

    For each ID in .Range("A1:A" & lRowSource) 
    Set FindID = wsSource.Range("A1:A" & lRowOutput).Find(What:=ID, LookIn:=xlValues, lookat:=xlWhole) 

    If Not FindID is Nothing then 
     wsSource.Range("B" & FindID.Row).Copy Destination:=wsOutput.Range("B" & FindID.Row) 
    Else 
     Exit Sub 
    End If 
End With 

或者你也可以使用:

Dim wsSource As Worksheet 
Set wsSource = ActiveWorkbook.Worksheet("NAME SOURCE SHEET") 
Dim wsOutput As Worksheet 
Set wsOutput = ActiveWorkbook.Worksheet("NAME OUTPUT SHEET") 
Dim i As Long 

wsOutput.Range("B1").EntireColumn.Insert 

For i=1 To wsSource.UsedRange.Rows.Count 
    If wsSource.Range("A" & i) = wsOutput.Range("A" & i) Then 
     wsSource.Range("B" & i).Copy Destination:=wsOutput.Range("B" & i) 
    End If 
Next i 
相關問題