specialuser
Goto Top

Visual Basics Programmierung

Hallo zusammen,

Excel 2010, ich habe zwei Excel-Dateien. Von der einen Datei soll in die andere mit VB und einem Button Felder kopiert werden.

Im genauen soll der Button in einem Schritt folgendes ausführen:

1. Zelle K38 (Datei1) soll kopiert werden in die nächst freie Zelle der Spalte A (Datei2)
2. Zelle L24 (Datei1) soll kopiert werden in die nächst freie Zelle der Spalte D (Datei2)
3. Zelle L30 (Datei1) soll kopiert werden in die nächst freie Zelle der Spalte E (Datei2)
4. Zelle N30 (Datei1) soll kopiert werden in die nächst freie Zelle der Spalte F (Datei2)
5. Zelle K38 (Datei1) soll kopiert werden in die nächst freie Zelle der Spalte G (Datei2)
6. Nun soll überprüft werden ob in Zelle A43, A45, A47, A49, A51, A53 (Datei1) ein Wert steht wenn ja soll in der nächst freien Zelle der Spalte H (Datei2) die summe der Zeilenanzahl ausgegeben werden.
7. Nun soll überprüft werden ob in Zelle B43, B45, B47, B49, B51, B53 (Datei1) ein Wert steht wenn ja sollen alle Werte aus diesen Zellen in der nächst freien Zelle in Spalte I (Datei2) untereinander ausgegeben werden.
8. Nun soll überprüft werden ob in Zelle L43, L45, L47, L49, L51, L53 (Datei1) ein Wert steht wenn ja sollen alle Werte aus diesen Zellen in der nächst freien Zelle in Spalte J (Datei2) untereinander ausgegeben werden.

Ich weiß nicht wie ich das mit Visual Basic verwirklichen kann und ob das überhaupt funktioniert, würde mich über eine Step by Step Anleitung sehr freuen.

MfG specialuser

Content-ID: 340060

Url: https://administrator.de/contentid/340060

Ausgedruckt am: 24.11.2024 um 14:11 Uhr

Kraemer
Kraemer 08.06.2017 um 11:50:39 Uhr
Goto Top
Moin,

klar ist das mit VBA machbar. Fang doch erst einmal mit den Punkten 1-5 an - die bekommst du schon mit dem Makrorekorder gelöst.

Gruß
133417
133417 08.06.2017 aktualisiert um 12:53:19 Uhr
Goto Top
Hier was für dich zum basteln ....
Sub doWork()
    Dim wb2 As Workbook
    Set wb2 = Workbooks.Open("D:\specialuser\file2.xlsx")  
    
    With Sheets(1)
        .Range("K38").Copy Destination:=wb2.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Offset(1)  
        .Range("L24").Copy Destination:=wb2.Sheets(1).Cells(Rows.Count, "D").End(xlUp).Offset(1)  
        .Range("L30").Copy Destination:=wb2.Sheets(1).Cells(Rows.Count, "E").End(xlUp).Offset(1)  
        .Range("N30").Copy Destination:=wb2.Sheets(1).Cells(Rows.Count, "F").End(xlUp).Offset(1)  
        .Range("K38").Copy Destination:=wb2.Sheets(1).Cells(Rows.Count, "G").End(xlUp).Offset(1)  
        
        If Join(Array(.Range("A43"), .Range("A45"), .Range("A47"), .Range("A49"), .Range("A51"), .Range("A53")), "") <> "" Then  
            ' k.A. was du damit meinst mit der Summe von Zeilenanzahl meinst, von was ?????  ==> Nun soll überprüft werden ob in Zelle A43, A45, A47, A49, A51, A53 (Datei1) ein Wert steht wenn ja soll in der nächst freien Zelle der Spalte H (Datei2) die summe der Zeilenanzahl ausgegeben werden.  
        End If
        
        If Join(Array(.Range("B43"), .Range("B45"), .Range("B47"), .Range("B49"), .Range("B51"), .Range("B53")), "") <> "" Then  
            .Range("B43,B45,B47,B49,B51,B53").Copy  
            wb2.Sheets(1).Cells(Rows.Count, "I").End(xlUp).Offset(1).PasteSpecial SkipBlanks:=True  
        End If
        If Join(Array(.Range("L43"), .Range("L45"), .Range("L47"), .Range("L49"), .Range("L51"), .Range("L53")), "") <> "" Then  
            .Range("L43,L45,L47,L49,L51,L53").Copy  
            wb2.Sheets(1).Cells(Rows.Count, "J").End(xlUp).Offset(1).PasteSpecial SkipBlanks:=True  
        End If
    End With
End Sub
Ich weiß nicht wie ich das mit Visual Basic verwirklichen kann und ob das überhaupt funktioniert, würde mich über eine Step by Step Anleitung sehr freuen.
Kannst du dir mit etwas lesen selber beantworten! Nur mit Foren-Fragen schreiben wirst du nicht schlauer ...


Gruß
specialuser
specialuser 08.06.2017 um 13:04:17 Uhr
Goto Top
Vielen dank dir schonmal für deine Arbeit

' k.A. was du damit meinst mit der Summe von Zeilenanzahl meinst, von was ????? ==> Nun soll überprüft werden ob in Zelle A43, A45, A47, A49, A51, A53 (Datei1) ein Wert steht wenn ja soll in der nächst freien Zelle der Spalte H (Datei2) die summe der Zeilenanzahl ausgegeben werden.

Hier soll einfach gezählt werden in wieviele Zeilen etwas geschrieben wurde und dann in der nächstfreien Zelle in Spalte H der Datei 2 ausgegeben werden.

Gruß
133417
133417 08.06.2017 aktualisiert um 14:05:43 Uhr
Goto Top
Zitat von @specialuser:
Hier soll einfach gezählt werden in wieviele Zeilen etwas geschrieben wurde und dann in der nächstfreien Zelle in Spalte H der Datei 2 ausgegeben werden.
Wohin geschrieben??

Naja, das bleibt dann eben deine Hausaufgabe wenn das vernünftige Beschreiben für nicht involvierte so schwer fällt...

Ciao.
specialuser
specialuser 08.06.2017 um 14:41:37 Uhr
Goto Top
Ob hier etwas reingeschrieben wurde: A43, A45, A47, A49, A51, A53 (Datei1) wenn ja soll er 1 + 1 + 1 + 1 rechnen eben für jede Zelle die beschrieben wurde und die summe dann in Spalte H in der nächstfreien Zelle ausgeben..

gruß
133417
133417 08.06.2017 aktualisiert um 14:47:09 Uhr
Goto Top
Dann mach eben eine If-Abfrage oder eine For-Schleife für jede Zelle und addiere eine 1 zu einem Zähler. Wie du das in die nächste leere Zelle schreibst siehst du ja in den anderen Code-Zeilen oben.
specialuser
specialuser 08.06.2017 um 14:55:19 Uhr
Goto Top
Hab es probiert aber kommt Laufzeitfehler
133417
133417 08.06.2017 aktualisiert um 15:02:49 Uhr
Goto Top
Zitat von @specialuser:
Hab es probiert aber kommt Laufzeitfehler
Super ..., man merkt der Freitag nähert sich face-sad. Soll ich hellsehen was du machst?????

Deine Arbeit machen lassen kannst du gerne hier:
https://www.gutefrage.net/

Witzbold.