Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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?

Kannst du vielleicht den ganzen Quelltextcode zeigen (;? Wäre echt nett..

  • Autor

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"

  • Autor

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"

  • Autor

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?

*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 ? ...

  • Autor

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...

  • Autor

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?

  • Autor

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..

  • Autor

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?

  • Autor

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...)

  • Autor

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.

  • Autor

das kopieren und einfügen klappt :D: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!!

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.

  • Autor

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.

  • Autor

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?

  • Autor

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!!!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.