Zum Inhalt springen

Zelleninhalt einlesen, umändern und daten abrufen...


Fänerk

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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"

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...