Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zellen auslesen2





Frage

hallo zusammen, was muss ich an dem nachfolgenden makro ändern, damit es sich seine gewünschten informationen aus dem Tabellenblatt "Tabelle2" holt? Dass diese werte dann im automatisch entstehenden tabellenblatt "auswertung" stehen ist ok, wo dann der minumum und maximum wert steht ist auch eher nebensächlich. Makro: sub zellen() Dim iRow As Long Dim jRow As Long Dim strAktSheet As String Dim iSheets As Integer Application.ScreenUpdating = False strAktSheet = ActiveSheet.Name For iSheets = Worksheets.Count To 1 Step -1 If Sheets(iSheets).Name = "Auswertung" Then Application.DisplayAlerts = False Sheets(iSheets).Delete Application.DisplayAlerts = False Exit For End If Next With Worksheets.Add .Name = "Auswertung" End With For iRow = 1 To Sheets(strAktSheet).Range("B65536").End(xlUp).Row If Sheets(strAktSheet).Cells(iRow, 2) = "%%RES2" Then GoTo Ende If Sheets(strAktSheet).Cells(iRow, 2) = "%%RES1" Then For jRow = iRow + 5 To Sheets(strAktSheet).Range("B65536").End(xlUp).Row If Sheets(strAktSheet).Cells(jRow, 2) = "%*" Then Sheets(strAktSheet).Range("B" & iRow + 5 & ":B" & jRow - 1).Copy Sheets("Auswertung").Cells(Sheets("Auswertung").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial Exit For End If Next jRow End If Next iRow Ende: Sheets(strAktSheet).Range("AE696") = Application.WorksheetFunction.Max(Sheets("Auswertung").Range("A2:A" & Sheets("Auswertung").Range("A65536").End(xlUp).Row)) Sheets(strAktSheet).Range("AE697") = Application.WorksheetFunction.Min(Sheets("Auswertung").Range("A2:A" & Sheets("Auswertung").Range("A65536").End(xlUp).Row)) End Sub wäre schön wenn ich hilfe bekäme. oliver? vllt von dir? gruß sebal

Antwort 1 von coros

Hallo sebal,

ändere in der Zeile

strAktSheet = ActiveSheet.Name


den Namen "ActiveSheet.Name" gegen den Namen "Tabelle2". Das sollte dann folgendermaßen aussehen

strAktSheet = "Tabelle2"


und sollte funktionieren.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von sebal

hallo oliver,

danke, hat funktioniert!

noch etwas anderes:

bei meinem programm gibt es 6 tabellenblätter
Diagramm1
Diagramm2
Diagramm3
Auswertung
Tabelle1
Tabelle3

was muss ich machen damit das Tabellenblatt "Diagramm3" nach ablauf des programms auf dem bildschirm erscheint.

weist du das evtl?

gruß sebal

Antwort 3 von coros

Hallo sebal

Sheets("Diagramm3").Activate


sollte das Tabellenblatt mit dem Namen "Diagramm3" aktivieren und anzeigen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von sebal

hallo oliver,

ich hätte da noch eine frage:

das folgende ist ein kleiner auszug aus meinem programm, in der letzten zeile steht in den klammern der dateiname dessen datei welche mit dem programm geöffnet werden soll. ich möchte mit meinem programm allerdings verschiedene dteien öffnen und dazu nicht immer den dateinamen in die klammer schreiben, kann man das automatisieren?


Range("B1:K8700").Select
Application.CutCopyMode = False
Selection.Copy
Windows("TB-Temperaturen.xls").Activate
Sheets("Tabelle1").Activate
Range("B1").Select
ActiveSheet.Paste
Windows("E3116_case10_mule_01.MUF").Activate

danke, gruß sebal

Antwort 5 von sebal

hallo,

und wo genau soll ich

sheets("Diagramm3").Activate

hinschreiben?

am ende des makros, am anfang, einfach irgendwo hin?

gruß sebal

Antwort 6 von Marie

Zitat:
was muss ich machen damit das Tabellenblatt "Diagramm3" nach ablauf des programms auf dem bildschirm erscheint.


nach ablauf des programms Sheets("Diagramm3").Activate

hast doch selbst gesagt wo Du es hinhaben willst.

Gruß Marie

Antwort 7 von coros

Hallo sebal,

Sheets("Diagramm3").Activate


schreibst Du ganz am Ende eine Zeile vor dem Eintrag "End Sub".

Mit dem Befehl, den Du da ansprichst, wird kein Progamm geöffnet, sondern ein bereits geöffnetets Programm wieder in den Vordergrund geholt. Daher weiß ich nicht so richtig, was Du möchtest.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von sebal

hallo oliver,

das was ich erreichen wollte mit
Sheets("Diagramm3").Activate
hat nicht funktioniert

gibts danoch was anderes?
hast du meine frage auch verstanden?
ich möchte einfach nur dass nach dem ablauf des programms zuerst das Tabellenblatt "Diagramm3" angezeigt wird, und nicht z.B. Tabellenblatt "Tabelle3" (in dem nur lauter werte stehen)

gruß sebal

Antwort 9 von Marie

Zitat:
dazu nicht immer den dateinamen in die klammer schreiben, kann man das automatisieren?


Wenn der Dateiname öfter vorkommt, dann schreib ihn als Variable rein

Dim strDatei as String

strDatei = "E3116_case10_mule_01.MUF"

und an der Stelle wo Du sie brauchscht schreibst Du dann:

Windows(strDatei).Activate


Gruß Marie

PS: Oder auch als Konstante definieren siehe Const-Anweisung in der VBA Hilfe

Antwort 10 von sebal

hallo,

das hat nun fast funktioniert, d.h. es hat funktioniert, aber jetzt erscheint noch der Visual Basic Editor als erstes, bekommt man den weg so dass wriklich das diagramm als erstes zu sehen ist?

gruß sebal

Antwort 11 von sebal

hallo marie,

danke, aber ich meine:

die datei heißt nicht immer E3116_case10_mule_01.MUF
sie kann ebenso "HUR7_123.MUF" heißen oder irdendwie anders. das sind zB 2 Datein die vüllig seperat von dem programm behandelt werden sollen

Antwort 12 von coros

Hallo sebal,

auf eines kannst Du Dich verlassen. Wenn ich hier schreibe,

Sheets("Diagramm3").Activate


aktiviert das Blatt mit dem Namen "Diagramm3", dann ist das auch so. Das hat nichts damit zu tun, dass ich Deine Frage nicht verstanden habe. Das hat auch nichts damit zu tun, dass ich von mir selber so überzeugt bin und mir keine Fehler unterlaufen, denn wenn ich hier etwas hinschriebe, habe ich das vorher auch getestet. Du hast wohl eher einen Fehler irgendwo eingebaut, wenn es nicht funktioniert.


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 13 von sebal

hallo,

sorry es funktioniert doch!

ich hätte noch eine frage:

wie erstelle ich einen button auf den ich klicken kann um dann eine datei auszuwählen auf die sich mein programm beziehen soll, dieser button sollte irgendwo im Tabellenblatt tabelle3 stehen und es soll folgendes drauf stehen:
"Bitte neue MUF-Rechnung einlesen"

wisst ihr da Rat? wie gesagt sorry oliver

gruß sebal

Antwort 14 von coros

Hallo sebal,

folgendes Makro öffnet ein Dialogfeld zur Auswahl einer Datei. Der ausgewählte Dateiname wird Dir dann in einer MessageBox ausgegeben. Der Dateiname steht in der Variablen "strDateiname".

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Dateiname()
Dim varDatei As Variant
Dim strDateiname As String
Dim iPostion As Integer
varDatei = Application.GetOpenFilename("alle Dateien, *.*")
If varDatei = False Then Exit Sub
iPostion = 0
Do While InStr(iPostion + 1, varDatei, "\", vbTextCompare) > iPostion
iPostion = InStr(iPostion + 1, varDatei, "\", vbTextCompare)
Loop
strDateiname = Mid(varDatei, iPostion + 1)
MsgBox strDateiname
End Sub



MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 15 von sebal

hallo oliver,

bei deiner Antwort 14 muss ich passen, auf was genau bezieht sich dieses makro? auf meine antwort 4?

danke, gruß sebal

Antwort 16 von coros

Hallo sebal,

auf AW13. Den Button dazu und die Buttonbeschriftung musst Du per Hand selber erstellen. Wie das geht, kannst Du auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 4 nachlesen. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 17 von sebal

hallo oliver,

ok, da werd ich mal rein schauen, aber ich habe dein makro jetzt getestet und das einzige was passiert ist: ich kann eine datei öffnen und dann wird mir mit einer msg box angezeigt wie diese heist, das wollte ich nicht, aber trotzdem danke. ich wollte einen button oder schaltfläche der in einen meiner tabellenblätter erscheint und auf den ich klicken kann und anschließend eine datei auswählen

danke,
gruß sebal

Antwort 18 von sebal

hallo oliver,

deine HP ist echt super, da steht genau das was ich wollte, danke, wie gesagt wenn ich damit probleme habe, meld ich mich, wiest du noch etwas zu antwort 4?

danke
gruß sebal

Antwort 19 von coros

Hallo sebal,

was Du schreibst ist schlicht weg falsch. Mit dem Makro wird Dir keine Datei geöffnet. Es wird der Pfad und der Name der ausgewählten Datei in eine Variable (Variablenname: varDatei ) geschrieben. Durch die dahinter geschaltete Schleife wird der Dateiname vom Pfad getrennt und der Name wird in Variable "strDateiname " geschrieben. Das ist dann die Variable, die Du dann benötigst, da in der Variablen der Dateiname steht, den Du ja haben wolltest

Du solltest bevor Du hier immer so Schnellschüsse verteilst, Diuch mit den Makro ausgiebig beschäftigen. Denn ansonsten macht das keinen Spaß mehr.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 20 von coros

Hallo,

meine ganzen Antworten nach AW 4 beziehen sich auf Deine AW4.

Wie bereits in AW7 geschrieben, Mit dem Befehl "Windows("E3116_case10_mule_01.MUF").Activate" wird kein Progamm geöffnet, sondern ein bereits geöffnetets Programm wieder in den Vordergrund geholt. Daher weiß ich nicht so richtig, was Du möchtest.

Den variablen Dateinamen erhälst Du ja mit dem Makro aus AW14.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 21 von sebal

hallo oliver,

ich hab dein makro getestet, und das ergebnis ist eine msgbox, welche mir sagt wie die datei heist welche ich geöffnet habe, oder?
das einzige was ich lediglich möchte ist:

Beispiel:
einmal möchte ich mit meinem gesamten programm die datei "E3116_case10_mule_01.MUF" öffnen, und das programm dann "darüber laufen lassen".
beim zweitenmal(seperat vom ersten mal) möchte ich das gleiche tun, nur diesmal mit der datei ("HUR6_12.MUF").

irgendwo in meinem makro taucht nun die zeile auf:
Sheets("E3116_case10_01.MUF").Activate
bzw Sheets("HUR6_12.MUF")

beim aktuellen stand meines programms muss ich bevor ich dieses starte(und weis welche datei ich dann öffnen möchte) jeweils diese Zeile oben so modifizieren dass in der klammer der dateiname steht den ich dann öffnen möchte, ich möchte das jedoch so nicht, geht das nicht automatisch irgendwie?

oder macht das dein makro oberhalb?

danke, gruß sebal

Antwort 22 von sebal

hallo oliver,

was ich auf jeden fall noch sagen muss, deine HP ist sehr gelungen, das mit dem Button war sogar für mich verständlich, vielen dank

gruß sebal

Antwort 23 von coros

Hallo sedal,

ich erkläre es jetzt zum 3. mal. Mit meinem Makro wird keine Datei geöffnet. Es erscheint ein Dialogfenster, in dem man eine Datei auswählen kann. Diese Auswahl wird mit samt dem Pfad in die Variable "varDatei" geschrieben. Da Du aber nur den Namen der Datei benötigst, wird mir der While-Schleife der Name vom Pfad getrennt und in Variable "strDateiname" geschrieben. Das ist die Variable, die Du dann in Deinem Programm weiter benutzen kannst. Den Befehl mit der Messagebox habe ich lediglich eingefügt, da es sich hierbei um ein Beispiel handelt und damit man dann im Beispiel die Rückmeldung erhält, welchen Dateinamen man ausgewählt hat.
Mein aufgeführtes Makro muss in Dein bestehendes Makro integriert werden. Wo das allerdings sein muss, weiß ich im Moment noch nicht so genau, da und das benfalls zum 3 mal, in Deinem geposteten Codes es keinen Befehl gibt, der eine Datei öffnet. Mit dem Befehl "Windows("E3116_case10_mule_01.MUF").Activate" wird keine Datei geöffnet, sondern ein bereits geöffnetes Programmfenster in den Vordergrund geholt. Das sagt das Wort "Windows" und ".Activate" aus. Daher und auch das nun zum 3 mal verstehe ich nicht ganz, was Du nun möchtest. Ein bereits geöffnetes Programm wieder aktivieren oder ein neues Programm öfnen???

Wenn ich jetzt nicht wieder sofort antworte, nicht ungeduldig werden, aber ab und zu muss ich auch noch meine Brötchen verdienen. Daher habe ich nachher einen Termin. Wenn ich wieder on Air bin, melde ich mich dann wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 24 von sebal

hallo oliver,

das ist kein problem, du bist eh so fleißig hier.
naja mein probelm hat sich irgendwie von selbst gelöst.
vllt dauert es nicht lang dann habe ich wieder ein probelm.
also vielen dank soweit, bis dann
gruß sebal