Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA Werte in eine Datei schreiben

Per VBA Werte in eine Datei schreiben
09.02.2014 16:58:33
Tobias
Hallo Leute,
ich möchte für den Brötchenverkauf in der Schule eine Statistik erstelle.
Jeden Tag soll , bei klicken des Bottons, aus der Excel Tabelle, die Anzahl, die Produktnummer, der Preis und die Kategorie in die Tabelle "Daten" geschrieben werden.
Mit folgendem Makro ist es zu realisieren. Bei 100 Zeilen aber sehr aufwendig.
Hat jemand eine Idee wie man es einfacher gestallten kann?
Gruß Tobi
https://www.herber.de/bbs/user/89198.xls
Sub Makro1()
Auftrag = Range("B11")
Anzahl1 = Range("B14")
Artikel1 = Range("C14")
Kategorie1 = Range("E14")
Preis1 = Range("F14")
Anzahl2 = Range("B15")
Nummer2 = Range("C15")
Kategorie2 = Range("E15")
Preis2 = Range("F15")
Windows("Daten.xls").Activate
With Sheets("Daten").Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Set c = .Find(Auftrag, LookIn:=xlValues)
If Not c Is Nothing Then
c.Select
GoTo weiter
End If
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Select 'letzte leere zelle
GoTo weiter
End With
weiter:
ActiveCell.Select
ActiveCell = Auftrag
Selection.Offset(0, 1) = Anzahl1
Selection.Offset(0, 2) = Artikel1
Selection.Offset(0, 3) = Kategorie1
Selection.Offset(0, 4) = Preis1
Selection.Offset(0, 5) = Anzahl2
Selection.Offset(0, 6) = Artikel2
Selection.Offset(0, 7) = Kategorie2
Selection.Offset(0, 8) = Preis2
ActiveWorkbook.Save
End 

Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Werte in eine Datei schreiben
09.02.2014 20:15:59
Franc
Das liegt am Selection ... man sollte das eigentlich nie verwenden.
Bin auch kein profi - im Makro gibts sicher etwas, was man hätte anders schreiben sollen ^^
Sub Makro1()
Dim wksUrsprung As Worksheet, wksZiel As Worksheet
Dim i, dZielZeile As Double, dZielSpalte As Double, strAuftrag As String
Set wksUrsprung = ThisWorkbook.Worksheets("Eingabe")
Set wksZiel = Workbooks("Daten.xls").Worksheets("Daten")
strAuftrag = wksUrsprung.Range("B11").Value
dZielSpalte = 1
'schauen ob es den Auftrag schon gibt.
With wksZiel.Range("A1:A" & wksZiel.Cells(Rows.Count, 1).End(xlUp).Row)
Set c = .Find(strAuftrag, LookIn:=xlValues)
If Not c Is Nothing Then
dZielZeile = c.Row
Else
dZielZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte leere zelle
End If
End With
' fängt bei Zeile 14 an und bis zur letzten beschriebenen
For i = 14 To wksUrsprung.Cells(Rows.Count, 2).End(xlUp).Row
' dZeilZeile haben wir oben ermittelt
' dZeispalte ist erstmal 1 und wird dann für jeden Eintrag um 1 erhöht
wksZiel.Cells(dZielZeile, dZielSpalte) = strAuftrag
wksZiel.Cells(dZielZeile, dZielSpalte + 1) = wksUrsprung.Cells(i, 2).Value 'Menge
wksZiel.Cells(dZielZeile, dZielSpalte + 2) = wksUrsprung.Cells(i, 3).Value 'Artikelnr
wksZiel.Cells(dZielZeile, dZielSpalte + 3) = wksUrsprung.Cells(i, 5).Value 'Preis kategorie
wksZiel.Cells(dZielZeile, dZielSpalte + 4) = wksUrsprung.Cells(i, 6).Value 'Einzelpreis
' damit das nächste daneben steht, dZeiSpalte + Anzahl Einträge - hier 5
dZielSpalte = dZielSpalte + 5
Next
Workbooks("Daten.xls").Save
End Sub

Anzeige
AW: Per VBA Werte in eine Datei schreiben
09.02.2014 21:13:17
Tobias
Hallo Franc ,
das funktioniert soweit ganz gut .. aber es wird immer als 5. Stelle die Nummer des Auftrages geschrieben.
Das heisst es kommt die Auftragsnummer, dann die vier Werte, dann wieder die Auftragsnummer, die 4 Werte und so weiter.
Die Auftragsnummer sollte nur einmal als erstes geschrieben werden,

AW: Per VBA Werte in eine Datei schreiben
09.02.2014 21:35:30
Tobias
Danke Franc,
funktioniert jetzt.
Ich habe die Zeile
wksZiel.Cells(dZielZeile, dZielSpalte) = strAuftrag
einfach vor die Schleife geschrieben!

AW: Per VBA Werte in eine Datei schreiben
10.02.2014 01:26:59
Franc
K, dann hast du aber ab dem 2. Wert eine Leerspalte drin.
Wenn du es noch nicht ausgebessert hast.
dZielSpalte = 2
wksZiel.Cells(dZielZeile, 1) = strAuftrag
wksZiel.Cells(dZielZeile, dZielSpalte) = wksUrsprung.Cells(i, 2).Value 'Menge
wksZiel.Cells(dZielZeile, dZielSpalte + 1) = wksUrsprung.Cells(i, 3).Value 'Artikelnr
wksZiel.Cells(dZielZeile, dZielSpalte + 2) = wksUrsprung.Cells(i, 5).Value 'Preis kategorie
wksZiel.Cells(dZielZeile, dZielSpalte + 3) = wksUrsprung.Cells(i, 6).Value 'Einzelpreis
' damit das nächste daneben steht, dZielSpalte + Anzahl Einträge - hier 4
dZielSpalte = dZielSpalte + 4
Anzeige

332 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige