2017-03-08 105 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