Fänerk Geschrieben 17. Dezember 2009 Teilen Geschrieben 17. Dezember 2009 hi @ all, ich habe eine Excel-Arbeitsmappe, wo ein Labor die Wöchentlichen Temperatur-Daten eines Datenloggers (für einen Kühlschrank) rein kopiert. Die Mappe hat eine Übersichtsseite, wo von jeder Woche der Mittelwert angegeben wird und dann zu jeder Woche ein Blatt, wo die Daten des Loggers (Seriennr./Anzahl Messewerte/Intervall/..), die Messwerte (12.12.09 - 2,4°C) und dann der Mittelwert angegeben sind. und ich soll jetzt eine Druckversion erstellen, die Wöchentlich ausgedruckt werden kann, wenn die neuen Werte rein kopiert wurden. der Mittelwert wird automatisch errechnet und zur Übersichtsseite übergeben. bei der Druckversion soll die KW angegeben werden, also z.B. 04, und Excel soll dann via Button die Daten aus dem Blatt "KW 04" abrufen und in bestimmte Zellen im "Druckversion"s-Blatt einfügen. es sollen die Daten des Loggers (Seriennr./Anzahl Messewerte/Intervall/..) und der Mittelwert auf der Druckversion vorhanden sein. Ich bin gerade am testen, wie ich das hinbekomme, nur komme ich nicht weiter. Ich habe mir gedacht, dass die eingegebene KW, z.B. 04, erstmal in "KW 04" umgewandelt wird, damit das schonmal den gleichennamen wie das Blatt hat, von wo die Daten geholt werden müssen. Nur fangen dort die Fehler schon an. ich habe testweise erstmal ein Skript erstellt, was die Zelle ausließt, den Wert ändern soll und in der Zelle dadrunter schreiben soll. aber beim ändern bekomme ich "laufzeitfehler 13: Typen unverträglich" hier mein test code: Sub Druckversion_KlickenSieAuf() Dim KWz, KWa As Integer KWz = Range("D7").Value KWa = "KW " & KWz Range("D8").Value = KWa End Sub bei "KWa = "KW" & KWz" steht dann der debugger. ich habe das schon mit " "KW" + KWz" versucht, da kommt aber das gleich. wo liegt der Fehler? ich habe schon gegooglt, aber nicht wirklich was passendes gefunden. bitte um hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 17. Dezember 2009 Teilen Geschrieben 17. Dezember 2009 Sub Druckversion_KlickenSieAuf() Dim KWz, KWa As Integer KWz = Range("D7").Value KWa = "KW " & KWz Range("D8").Value = KWa End Sub Was soll denn die 2. Zuweisung an KWa bewirken? Welchen Datentyp hat KWa? Was weist du dieser Variablen zu? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
skejcik Geschrieben 18. Dezember 2009 Teilen Geschrieben 18. Dezember 2009 Kannst du vielleicht den ganzen Quelltextcode zeigen (;? Wäre echt nett.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 18. Dezember 2009 Autor Teilen Geschrieben 18. Dezember 2009 das ist derzeit der ganz, wie gesagt, ich bin am probieren, wie ich aus "03" "KW 03" machen kann. Die User geben in eine Zelle (D7) die Wochenzahl ein (also 01, 02, 03, ...) die Arbeitsblätter zu den einzelnen Kalenderwochen in der Mappe heißen KW 01, KW 02, .... damit die Variable dann gleich mit dem Arbeitsblattnamen ist, will ich aus der eingegebenen Zahl KW 01, KW 02, ... machen. kurz: vor die eingegebene Zahl der User soll "KW " vorgehangen werden. ich habe das mit der 2. Variable auch nur getestet. zuerst hatte ich den code so: Dim KWz As Integer KWz = Range("D7").Value KWz = "KW " & KWz Range("D8").Value = KWz End Sub da das aber nicht funktionierte, habe ich weiter ausprobiert, daher war die 2. Variable dabei, die sollte einfach den Endwert enthalten, also das "KW xx" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 18. Dezember 2009 Teilen Geschrieben 18. Dezember 2009 Warum deklarierst du KWz als Integer und versucht dann eine Stringverkettung zuzuweisen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 18. Dezember 2009 Autor Teilen Geschrieben 18. Dezember 2009 das habe ich nachher auch gemerkt, dass ich da total den fehler begann... aber mit string geht das auch noch nicht. derzeitiger code ist wie in meinem letztne post, nur statt integer string. meckert bei "KWz = "KW " & KWz" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 19. Dezember 2009 Teilen Geschrieben 19. Dezember 2009 poste mal bitte den jetzt aktuellen Code und verrate uns vielleicht auch mal die Fehlermeldung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 aktueller Code: Dim KWz As Integer KWz = Range("D7").Value KWz = "KW " & KWz Range("D8").Value = KWz Fehlermeldung: Laufzeitfehler '13': Typen unverträglich den Debugger setzt er dann bei: KWz = "KW " & KWz weiter bin ich derzeit noch nicht, da ich nicht viel mit VBA bisher gemacht habe und mich erstmal wieder rein denken muss und gerne erst den Fehler weg haben will. was ich aber machen will ist klar, oder habe ich das nicht gescheit erklärt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
PromiseYou Geschrieben 21. Dezember 2009 Teilen Geschrieben 21. Dezember 2009 *kopfschüttel* wo findet denn bitte Warum deklarierst du KWz als Integer und versucht dann eine Stringverkettung zuzuweisen? das habe ich nachher auch gemerkt, dass ich da total den fehler begann... aber mit string geht das auch noch nicht. derzeitiger code ist wie in meinem letztne post, nur statt integer string. meckert bei "KWz = "KW " & KWz" die berücksichtigung in deinem code ? ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 ich habe den code eben erst nochmal neu gemacht und sry, :upps ich habe wieder nicht dran gedacht *schäm* (ist ja auch noch früh :floet:) gut das klappt dann, ich bekomme das jetzt so ausgegeben. wie stelle cih das mit der Abfrage denn jetzt an? bitte einen tipp... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 21. Dezember 2009 Teilen Geschrieben 21. Dezember 2009 welche abfrage? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 die Mitarbeiter geben die KW ein (01-52) das wird umgewandelt in "KW <Zahl>" die Arbeitsblätter heißen genauso ("KW <Zahl>", z.B. "KW 01" "KW 16" ...) aus dem Arbeitsblatt sollen 2 Zellen kopiert werden und im Arbeitsblatt "Druckversion" (das ist das aktuelle arbeitsblatt, von wo aus das Makro ausgeführt wird) eingefügt werden dazu kommt nachher dann noch, dass die 1. der beiden Zellen aufgeteilt werden muss in der Zelle stehen die daten des Messgerätes (Seriennr.: xxxxxxxx - Anzahl Messungen: xxxx - .... ) und dabei muss ich nachher dann die einzelnen sachen haben, also eine Zelle kommt "Seriennr.: xxxxxxx", da drunter "Anzahl Messungen: xxxx" usw. verständlich? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 21. Dezember 2009 Teilen Geschrieben 21. Dezember 2009 Und wo ist jetzt dein konkretes Problem dabei? Was hast du außer dem Dreizeiler für die Stringverkettung der Kalenderwoche schon codiert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 noch nichts. ich bin gerade in meinen alten daten am gucken, wie das alles in vba nochmal funktionierte, ist schon lange her, dass ich was mit vba machen musste... daher habe ich gerade noch keinen ansatz.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 so ich habe jetzt was geschrieben, da meckert er aber noch. ich gehe davon aus, dass es an der wahl des Arbeitsblattes liegt. der code: Sub Druckversion_KlickenSieAuf() Dim KWz As String KWz = Range("D7").Value KWz = "KW " & KWz Range("D8").Value = KWz Sheets(KWz).Range(A, 1).Copy ActiveSheet.Range(D, 10).Paste Sheets(KWz).Range(E, 3).Copy ActiveSheet.Range(D, 16).Paste End Sub es liegt denke an "Sheets(KWz)" wie muss ich das machen, dass VBA den Inhalt der Variable KWz als Arbeitsblatt Namen nimmt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 21. Dezember 2009 Teilen Geschrieben 21. Dezember 2009 Wenn er nur meckert ist das ja ok; falls er auch eine Fehlermeldung ausgibt, wäre es schon nett, diese zu wissen und auch die Zeile, wo sie auftritt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 die fehlermeldung kommt bei "Sheets(KWz).Ran..." und es ist Laufzeitfehler 1004 "Anwendungs- und Objektdefinierter Fehler" wenn ich "Sheets("KWz").Range.." schreibe, dann kommt Laufzeitfehler 9 "Index auserhalbdes Gültigen Bereiches" (verständlich, denn es gibt ja kein Baltt, was "KWz" heißt...) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 etwas weiter bin ich jetzt schon... ich habe den fehler gemacht, "Range(A, 1).Copy" es muss aber "Range("A1").Copy" heißen. ich habe das bei den 4 sachen geändert, jetzt kommt aber ein Fehler in der 1. Paste Zeile. Laufzeitfehler '438' Objekt unterstützt diese Eigenschaft oder Methode nicht code: Sub Druckversion_KlickenSieAuf() Dim KWz As String KWz = Range("D7").Value KWz = "KW " & KWz Range("D8").Value = KWz Sheets(KWz).Range("A1").Copy [COLOR="Red"]ActiveSheet.Range("D10").Paste[/COLOR] Sheets(KWz).Range("E3").Copy ActiveSheet.Range("D16").Paste End Sub ich habe die Zeile makiert, wo Excel meckert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 das kopieren und einfügen klappt :D Code: Sub Druckversion_KlickenSieAuf() Dim KWz As String KWz = Range("D7").Value KWz = "KW " & KWz Range("D8").Value = KWz Sheets(KWz).Range("A1").Copy Sheets("Druckversion").Range("D10").Select ActiveSheet.Paste Sheets(KWz).Range("E3").Copy Sheets("Druckversion").Range("D16").Select ActiveSheet.Paste End Sub ich habe dazu nur gerade ein Problem: bei dem 2. kopier Vorgang kopierte Excel den fx-Befehl und nicht den Inhalt. Wie sage ich dem Makro noch, dass nur der Wert kopiert werden soll und nicht der fx-Befehl? und als letzten teil des Makros muss jetzt noch eine Zelle, in der Daten über das Gerät drin stehen (Seriennr.: xxxxxx - Anzahl Messungen: yyyy - ...) aufgesplittet werden. die einzelnen Werte werden durch "-" getrennt, kann ich eine Abfrage machen, die die Zelle in mehrere Zellen aufteilt und dass immer an dem "-" Zeichen? und wie geht das dann? mfg und auch schonmal danke an alle!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 21. Dezember 2009 Teilen Geschrieben 21. Dezember 2009 und als letzten teil des Makros muss jetzt noch eine Zelle, in der Daten über das Gerät drin stehen (Seriennr.: xxxxxx - Anzahl Messungen: yyyy - ...) aufgesplittet werden. die einzelnen Werte werden durch "-" getrennt, kann ich eine Abfrage machen, die die Zelle in mehrere Zellen aufteilt und dass immer an dem "-" Zeichen? und wie geht das dann? VBA-Doku/MSDN nehmen, nach "split" suchen und selbständig anwenden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 k, danke werde ich gleich direkt machen.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 das hat gut geklappt, zumindest beim ersten test, als ich nur einen Teil der Kette ausgab, aber das funkt noch nicht komplett. hier mein Code: Sub Druckversion_KlickenSieAuf() Dim KWz, ganz, einzel() As String KWz = Range("D7").Value KWz = "KW " & KWz Range("D8").Value = KWz Sheets(KWz).Range("A1").Copy Sheets("Druckversion").Range("D10").Select ActiveSheet.Paste Sheets(KWz).Range("E3").Copy Sheets("Druckversion").Range("D16").Select ActiveSheet.Paste ganz = Range("D10").Value einzel = Split(ganz, "- ", -1) Range("C10").Value = einzel(0) Range("C11").Value = einzel(1) Range("C12").Value = einzel(2) Range("C13").Value = einzel(3) End Sub wenn ich das ausführe, dann bekomme ich die Sachen nicht ausgegeben. Es kommt keine Fehlermeldung, aber die letzten 4 Befehle werden nicht angezeigt. so sieht die zeile aus, die geändert werden soll: Seriennr. : 62002780 - Anzahl Messwerte : 4341 - Intervall : 60 -Limit Min.: -5.0 °C - Limit Max.: 15.0 °C und es ist noch das Problem, dass bei dem 2. kopier Vorgang der fx-Befehl statt des Wertes kopiert wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 das kopieren, splitten und einfügen klappt, das problem war, dass ich die Zellen C10 - C14 mit der B Zelle davor verbunden hatte und es damit ja keine C10 - C14 gab, daher wurde das nicht angezeigt. jetzt habe ich nur ncoh das Problem mit der Formel. also bei diesem Vorgang: Sheets(KWz).Range("E3").Copy Sheets("Druckversion").Range("D16").Select ActiveSheet.Paste wird eine Zelle kopiert, in der ein fx-Befehl steht [=WENN(ISTLEER(A17);"";MITTELWERT(A:A))] jetzt wird nur die Formel kopiert und nicht der Wert, was muss ich angeben, damit nur der Wert (das Ergebnis der Formel) kopiert und eingefügt wird? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 21. Dezember 2009 Teilen Geschrieben 21. Dezember 2009 Ungetestet, da ich aktuell kein Excel drauf habe, sollte das mit .value gehen. Gruß Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fänerk Geschrieben 21. Dezember 2009 Autor Teilen Geschrieben 21. Dezember 2009 ich hatte es am laufen danke an alle, die geholfen haben... leider gab es einen fehler beim abspeichern, sodass ich jetzt, wenn ich die Excelmappe öffne keine Makros mehr dadrin habe aber der Code war nicht viel unterschied zum obigen (2 posts hier drüber) daher ist das nicht schlimm. ich habe zum übernehmen der Werte das so gemacht: Sheets("Druckversion").Range("D10") = Sheets(KWz).Range("A1") so klappt das ganze. nochmals Danke an euch alle!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.