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-Key: 340060

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

Printed on: April 16, 2024 at 19:04 o'clock

Member: Kraemer
Kraemer Jun 08, 2017 at 09:50:39 (UTC)
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ß
Mitglied: 133417
133417 Jun 08, 2017 updated at 10:53:19 (UTC)
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ß
Member: specialuser
specialuser Jun 08, 2017 at 11:04:17 (UTC)
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ß
Mitglied: 133417
133417 Jun 08, 2017 updated at 12:05:43 (UTC)
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.
Member: specialuser
specialuser Jun 08, 2017 at 12:41:37 (UTC)
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ß
Mitglied: 133417
133417 Jun 08, 2017 updated at 12:47:09 (UTC)
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.
Member: specialuser
specialuser Jun 08, 2017 at 12:55:19 (UTC)
Goto Top
Hab es probiert aber kommt Laufzeitfehler
Mitglied: 133417
133417 Jun 08, 2017 updated at 13:02:49 (UTC)
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.