2017-03-08 7 views
1

Ich bin sehr neu in VBA-Codierung. Ich habe zwei Blätter in Excel.VBA-Codierung in Excel

Blatt 1 - Spalten enthalten CTC, TCC (A1, B1) Zeilen enthalten die ctc tcc und Details (A2, B2)

Blatt 2 - Zeilen umfassen und CTC TCC. Auf dieser Seite wird TCC berechnet. B1 hat CTC aus der ersten Zeile von sheet1 übernommen. Dann werden Berechnungen durchgeführt, um TCC in B3 zu berechnen.

Voraussetzung: Für TCC Berechnung, müssen wir die erste CTC in Blatt 1 bis Blatt 2 CTC Säule Ergebnis einfügen auf Blatt 1 unter TCC Spalte erscheinen TCC erhalten hat, sollte.

Dies ist der Code, den ich versucht:

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

Was ist los mit dem Code? Gibt es einen Fehler (wenn ja, welchen Fehler, wo)? Läuft es einfach nicht? Wird es ausgeführt, aber nicht ausgegeben, was Sie erwarten? ... – BruceWayne

+1

Ich nehme an, "Blatt 1" und "Blatt 2" sind die ** Namen ** Ihrer Arbeitsblätter, da sie Leerzeichen enthalten. Was sind die Codenamen von jedem von ihnen (d. H. Ist "Sheet1" der Codename von "Sheet 1" oder "Sheet 2")? Auch welches Blatt ist das erste (d. H. "Blätter (1)") und welches ist das zweite? – YowE3K

+1

"Ai" sieht nicht wie ein gültiger Bereich aus. – Jbjstam

Antwort

0

Ich glaube, dass dieser Code ist, was Sie wollen. Lassen Sie mich wissen, wenn es anders ist, als Sie erwartet haben.

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

Ja, Sie können ersetzen -> Bereich ("B1"). Spalte <- mit 2 Ich wollte nur klar machen. –

+0

OK - Ich war mir nicht sicher, ob Sie diese Methode nur deshalb nutzten, weil Sie dachten, es wäre eine nützliche Methode, wenn Sie Zellen mit einer Spalte von beispielsweise "DHA" verwenden würden könnte einfach '' DHA '' anstelle von '2913' verwenden. – YowE3K

+0

"DHA" statt 2913 ???? –

0

Es klingt wie Sie den folgenden Code wollen:

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 

ich verwendet habe, Blattnamen von „Blatt 1“ und „Blatt 2“, wie das ist, was Sie in Ihrer Frage haben. Diese sollten geändert werden, wenn Ihre Blätter tatsächlich "Sheet1" und "Sheet2" heißen.


Es ist schwer zu wissen, wie nah Sie ohne zu wissen, waren die CodeName Ihre Blätter verwendet haben, und in welcher Reihenfolge erschienen sie in der Arbeitsmappe. Aber Ihre Verwendung eines Range("Ai") war definitiv falsch - es muss Range("A" & i) oder Cells(i, "A") (oder Cells(i, 1)) sein.


Aktualisiert alle Werte in Spalte A von Arbeitsblatt "Blatt 1" zu verarbeiten:

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

Ich werde die oben genannten Codes versuchen. Ich habe meine Blätter noch nicht benannt. Es ist immer noch der Standardname. Der Fehler geworfen ist Methode oder Datenmember nicht gefunden. – Archa

+0

@Archa Wenn die Blätter immer noch die Standardwerte sind, haben Sie (standardmäßig) die Namen "Sheet1" und "Sheet2" - aktualisieren Sie den Code, um "Sheet 1" in "Sheet1" und "Sheet 2" in "Sheet2" zu ändern. – YowE3K

+0

vielen Dank. Es hat funktioniert! kann ich eine while-Schleife verwenden, um sie zu stoppen, wenn die Zelle leer ist? – Archa