EXcel Makro Zellenwert an andere Stelle kopieren wenn nicht leer?

Nico_B

Lt. Junior Grade
Registriert
Sep. 2010
Beiträge
345
Guten Morgen,

ich kenne mich mit Markos nur über das aufzeichnen aus und vereinzelt ein paar befehle. Ich möchte gerne das nach und nach für einen ausdruck aus einer Spalte von A10 bis A19 die Werte auf ein anderes Tabellenblatt in die Zelle B10 kopiert werden um so dann berechnungen durchzuführen und die seite auszudrucken. Wenn jedoch eine Zelle von A10 bis A19 (vereinfacht leer sind) soll nichts ausgedruckt werden sondern es soll weiter zur nächsten zelle gegangen werden.

wie muss ich den quellcode hierzu anpassen:

Code:
Sub kopieren()
A1:
    Sheets("Optionen").Select
    Range("A1").Select
    Selection.Copy
    Sheets("Einfügen").Select
    Range("B4").Select
    ActiveSheet.Paste
    Calculate
    ActiveSheet.PrintOut
    GoTo A3
A2:
    Sheets("Optionen").Select
    Range("A2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Einfügen").Select
    Range("B4").Select
    ActiveSheet.Paste
    Calculate
    ActiveSheet.PrintOut
A3:
    Sheets("Optionen").Select
    Range("A3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Einfügen").Select
    Range("B4").Select
    ActiveSheet.Paste
    Calculate
    ActiveSheet.PrintOut
    
End Sub
 
Zuletzt bearbeitet:
Evlt. hilft dies (siehe Anhang). Nur wenn im Tabellenblatt 1 jeweils in A un B Werte stehen, dann erst werden auf Tabellenblatt2 die beiden Werte addiert. Ansonsten bleibt die Zelle ausgeblendet:
Code:
=WENN(Tabelle1!A2="";"";WENN(Tabelle1!B2="";"";Tabelle1!A2+Tabelle1!B2))
 

Anhänge

Hallo.

also das er eine schleife durchläuft und was druckt habe ich hinbekommen

Code:
Sub schleife()
    For i = 1 To 4
    If (Cells(i, 1).Value = Wert) Then
        Selection.Copy
        Sheets("Einfügen").Select
        Range("B4").Select
        ActiveSheet.Paste
        Calculate
        ActiveSheet.PrintOut
    End If
    Next i
End Sub

aber in a2 und a3 steht nichts. excel ändert jedoch die zahlen nicht (1, , , 4) nicht sondern druckt nur das was auf dem tabellenblatt stand
 
da fehlt das du nach durchlauf der ersten schleife
wieder in das sheet optionen zurückgehst und dort auf eine leere zelle prüfst
und es ist nicht ganz klar welche zelle du kopierst Cells(i, 1).Value

aber es wird schon der ansatz ist ok.

probier es nochmal und wenn es dann nicht klappt schreib ich dir
schnell den code
Ergänzung ()

sooo ungefähr ( wenn auch immer noch umständlich )

Sub schleife()

For i = 10 To 19
Sheets("optionen").Select
If (Cells(i, 1).Value > 0) Then
Cells(i, 1).Copy

Sheets("Einfügen").Select
Range("B10").Select
ActiveSheet.Paste
Calculate
ActiveSheet.PrintOut
End If
Next
End Sub
 
hi,

klappt leider nicht der druckt zwar übernimmt den wert aber nicht.

Code:
Sub schleife()
    For i = 1 To 2
    Sheets("Optionen").Select
    If (Cells(i, 1).Value = Wert) Then
    Cells(i, 1).Copy
    Sheets("Einfügen").Select
    Range("B4").Select
    ActiveSheet.Paste
    Calculate
    ActiveSheet.PrintOut
    End If
    Next
End Sub
 
Kann man nicht statt dem Kopieren/Einfügen folgendes schreiben:

Code:
    Sub schleife()
    For i = 1 To 2
    Sheets("Optionen").Select
    If (Cells(i, 1).Value <> "") Then
    
    Worksheets("Einfügen").Cells(4, 2).Value = Worksheets("Optionen").Cells(i,1).Value 
    

    Calculate
    Worksheets("Einfügen").PrintOut
    End If
    Next
    End Sub

EDIT: Hab mal noch die Anregung von cessy eingefügt.
 
Zuletzt bearbeitet: (Kommentar von cessy000)
das hier stimmt noch nicht...

If (Cells(i, 1).Value = Wert


du willst doch das er die zelle kopiert wenn die zelle nicht leer ist, oder ?
WERT ist da nicht ganz richtig....

probier mal das zu ersetzen....

möglichkeiten sind bspw...
isempty
len(zelle) > 0
value > 0

gibt da viele möglichkeiten
 
klappt leider immer noch nicht.

hoffe habe die sachen richtig ausprobiert:

Code:
     Sub schleife()
    For i = 1 To 2
    Sheets("Optionen").Select
    If (Cells(i, 1).Value <> "") Then
    Worksheets("Einfügen").Cells(4, 2).Value = Worksheets("Optionen").Cells(i,1).Value
     
    Calculate
    Worksheets("Einfügen").PrintOut
    End If
    Next
    End Sub

Code:
     Sub schleife()
    For i = 1 To 2
    Sheets("Optionen").Select
    If (Cells(i, 1).isEmpty) Then
    Worksheets("Einfügen").Cells(4, 2).Value = Worksheets("Optionen").Cells(i,1).Value
     
    Calculate
    Worksheets("Einfügen").PrintOut
    End If
    Next
    End Sub

Code:
     Sub schleife()
    For i = 1 To 2
    Sheets("Optionen").Select
    If (Cells(i, 1).Value > 0) Then
    Worksheets("Einfügen").Cells(4, 2).Value = Worksheets("Optionen").Cells(i,1).Value
     
    Calculate
    Worksheets("Einfügen").PrintOut
    End If
    Next
    End Sub

Code:
     Sub schleife()
    For i = 1 To 2
    Sheets("Optionen").Select
    If (Cells(i, 1).len(i,1)) Then
    Worksheets("Einfügen").Cells(4, 2).Value = Worksheets("Optionen").Cells(i,1).Value
     
    Calculate
    Worksheets("Einfügen").PrintOut
    End If
    Next
    End Sub
 
Also ich hab das mal getestet. Die erste Variante funktioniert bei mir. Ich hab ein Sheet Namens "Optionen" und in die erste Spalte nacheinander 2,nix,3 eingetragen. Dann ein zweites Sheet Namens "Einfügen" und dort in Feld "C4" die Formel "=B4+3". Wenn ich das Makro ausführe druckt er mir zwei Blätter mit einmal 2 in B4 und 5 in C4 und einmal 3in B4 und 6 in C4.

Mach doch auch mal so ein simples Beispiel und schau ob es funktioniert. Vielleicht bist du einfach mit deinen Werten eine Zeile oder Spalte verrutscht.

Hier ist die Beispieldatei mit Makro:

Anhang anzeigen Mappe1.zip
 
Zuletzt bearbeitet:
bei welcher zeile kommt denn der fehler ?

logisch das einige Beispiel nicht funktionieren, da ist einfach die Syntax falsch...

bspw....
If (Cells(i, 1).isEmpty) Then
oder
If (Cells(i, 1).len(i,1)) Then

aber warum geht der erste code nicht ?
welche fehlermeldung bekommst du ?


( und dir ist klar das du die Zellen A1 und A2 durchsuchst ja ??? )

für A10 bis A20 musst du es in
For i = 10 To 20
ändern...
 
Zurück
Oben