2017-03-08 69 views
1

我對VBA編碼非常陌生。我有兩張在excel中。Excel中的VBA編碼

表1 - 列包括CTC,TCC(A1,B1) 行包含CTC TCC和細節(A2,B2)

表2 - 行包括CTC TCC和。它在TCC計算的這個頁面中。 B1從表1的第一行取得CTC。然後進行計算以計算B3中的TCC。

要求: 爲了計算TCC,我們需要粘貼第一CTC在片1片2得到的已TCC應該出現在下TCC柱片1 CTC Column.The結果。

這是我試過的代碼:

Sub Button1_Click() 

    Dim value1 As Integer 
    Dim value2 As Integer 

    For i = 1 To 6 

     value1 = ThisWorkbook.Sheets(1).Range("Ai").Value 

     Sheet2.Range("B1") = value1 

     Sheet1.Cells(B, i) = ThisWorkbook.Sheets(2).Range("B3").Value 

    Next i 
End Sub 
+0

有什麼不好的代碼?它是否給出錯誤(如果是這樣,哪個錯誤在哪裏)?它只是沒有運行?它是否運行,但沒有輸出你期望的結果? ... – BruceWayne

+1

我假設「工作表1」和「工作表2」是工作表的**名稱**,因爲它們包含空格。他們每個的代號是什麼(即'Sheet1'是「Sheet 1」還是「Sheet 2」的代號)?另外,哪張是第一張(即'Sheets(1)'),哪張是第二張? – YowE3K

+1

「Ai」看起來不像一個有效的範圍。 – Jbjstam

回答

0

我覺得這個代碼是你想要的。 讓我知道,如果它不同,你所期望的。

Sub Button1_Click() 
    Dim value1 As Integer 
    Dim value2 As Integer 
    For i = 1 To 6 
     value1 = ThisWorkbook.Sheets(1).Range("A" & i).Value ' we can't make Range("Ai").Value 
     Sheet2.Range("B1").Value = value1 
     Sheet1.Cells(i, Range("B1").Column).Value = Sheet2.Range("B3").Value 'Cells(row, columns), that is the correct format for cells 
    Next i 
End Sub 
+0

是的,您可以替換 - > Range(「B1」)。Column < - with 2 我只想說清楚。 –

+0

好的 - 我不確定你是否使用這種方法,僅僅是因爲你認爲這是一種有用的方式,當你使用具有例如「DHA」列的單元格時 - 並沒有意識到你可以使用''DHA''而不是'2913'。 – YowE3K

+0

「DHA」而不是2913 ???? –

0

這聽起來像你想下面的代碼:「表1」和「表2」的

Sub Button1_Click() 
    Dim i As Long 
    For i = 1 To 6 
     ThisWorkbook.WorkSheets("Sheet 2").Range("B1").Value = ThisWorkbook.WorkSheets("Sheet 1").Cells(i, "A").Value 
     ThisWorkbook.WorkSheets("Sheet 1").Cells(i, "B").Value = ThisWorkbook.WorkSheets("Sheet 2").Range("B3").Value 
    Next i 
End Sub 

我用工作表名稱,因爲這是你在你的問題。如果您的工作表實際上被稱爲「工作表1」和「工作表2」,那麼這些應該更改。


很難知道你有多接近是不知道該CodeName你的牀單使用,他們出現在工作簿順序。但是您使用Range("Ai")肯定是錯誤的 - 它需要是Range("A" & i)Cells(i, "A")(或Cells(i, 1))。


更新處理在工作表 「表1」 列中的所有值:

Sub Button1_Click() 
    Dim i As Long 
    With ThisWorkbook.WorkSheets("Sheet 1") 
     For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row 
      'Check so that we only process non-empty cells 
      '(just in case there is an empty cell part-way through the data) 
      If Not IsEmpty(.Cells(i, "A").Value) Then 
       ThisWorkbook.WorkSheets("Sheet 2").Range("B1").Value = .Cells(i, "A").Value 
       .Cells(i, "B").Value = ThisWorkbook.WorkSheets("Sheet 2").Range("B3").Value 
      End If 
     Next i 
    End With 
End Sub 
+0

我將嘗試上面的代碼。我還沒有命名我的工作表。它仍然是默認名稱。拋出的錯誤是未找到方法或數據記憶。 – Archa

+0

@Archa如果工作表仍然是默認設置,則您(默認情況下)將它們命名爲「Sheet1」和「Sheet2」 - 更新代碼以將「Sheet 1」更改爲「Sheet1」和「Sheet 2」更改爲「Sheet2」。 – YowE3K

+0

非常感謝你。它工作!當單元格爲空時,我可以使用while循環來停止它嗎? – Archa