Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VB in Excel - HILFE





Frage

Hallo, ich brauche mal wieder Hilfe bei einer Excel-Tabelle, in der VB eingebunden ist (dank der Hilfe HIER!) Es handelt sich um eine ToDo-Liste, die ich wie folgt umschreiben musste (komme nun aber mit dem VB nicht mehr klar): Es gibt eine Tabelle mit vier Tabellenblättern (da vier Benutzer) - die Überschriften lauten: Spalte A = Nr. Spalte B = Erhalten am Spalte C = Erhalten von Spalte D = Vorgang Spalte E = Notizen Spalte F = Weitergereicht am Spalte G = Weitergereicht an Spalte H = Erledigt am in Spalte J stehen die Benutzerkürzen: J1 = EF J2 = BH J3 = PH J4 = AB J4 = WB (CHEF) Nun möchte ich folgendes: EF nimmt einen Auftrag entgegen und trägt ihn in ihr Tabellenblatt ein. Dieser Auftrag ist aber gedacht für BH. Nun sollen die Angaben automatisch in das Tabellenblatt von BH übernommen werden. Außerdem möchte ich, dass wenn ein Auftrag weitergereicht wurde, dieser automatisch in der Spalte "Erledigt am" mit dem Datum aus "Weitergereicht am" befüllt wird. Ich habe dies mit einer WENN-Formel gelöst, aber da diese Formel in der gesamten Spalte steht, dauert es sehr, sehr lange bis meine Tabelle geöffnet wird. Hat jemand Ahnung davon???? Ich hatte zwar VB in meiner Ausbildung, komme aber damit überhaupt nicht zurecht! Vielen Dank Gruss Petra

Antwort 1 von coros

Nabend Petra,

ich hätte da folgende Lösung anzubieten. Kopiere nachfolgenden Code in das Tabellenblatt, in dem die Personen, die den Auftrag entgegennehmen, die Daten eintragen.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile_Zieltabelle As Long, Zieltabelle As String
On Error Resume Next
If Target.Column = 7 Then
Zieltabelle = Target.Cells
Zeile = Target.Row
Zeile_Zieltabelle = Sheets(Zieltabelle).Range("A65536").End(xlUp).Offset(1, 0).Row
Cells(Zeile, 6).Copy Cells(Zeile, 8)
Rows(Zeile).Copy Sheets(Zieltabelle).Cells(Zeile_Zieltabelle, 1)
End If
End Sub


Bei dem Code wird, wenn in der Spalte G (Weitergeleitet an) ein Kürzel eingetragen wird, die eingegebenen Daten in das entsprechende Tabellenblatt kopiert. Außerdem wrid das Datum aus Spalte F (Weitergereicht am) in Spalte H (Erledigt am) kopiert. Ich habe Dir mal eine kleine Beispieldatei auf meine HP hochgeladen, die Du Dir hier runterladen kannst.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

MfG,
coros
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 Petra65

Morgen coros,

Mann - das ist ja genial!!!!
Und das mit den paar Zeilen?!

Es funktioniert einwandfrei - und ich habe mir
dabei einen abgebrochen!!!!!

Gibst Du zufällig Excel-Kurse???

Herzlichen Dank nochmal und viele Grüße

Petra

Antwort 3 von Petra65

Ich will ja nicht nerven - aber schon wieder ICH!

Da besteht noch ein kleiner Schönheitsfehler (bzw. Denkfehler meinerseits).

Aus der Tabelle1 (dort wo die Daten aufgenommen werden) muss ersichtlich sein, welcher Bearbeiter die Daten eingetragen hat. Also habe ich in Spalte B "Eingetragen von" eingefügt.

Aber allerdings dürfen nur die Daten bis Spalte F (Notizen) weitergegeben werden an die anderen Tabellen, da ja der einzelne Bearbeiter die Vorgänge auf ERLEDIGT setzen muss.
Ganz genial wäre es natürlich, wenn der Bearbeiter den Vorgang auf erledigt gesetzt hat, dass das Datum in die Eingabetabelle übernommen wird. ("Weitergereicht am" braucht also nicht in "Erledigt am" übernommen werden!)

Ich hoffe, dass ich mich so einigermaßen verständlich ausgedrückt habe ???
Und hoffe mal wieder auf (Nach-) HILFE1

Hzl. Grüße

Petra

Antwort 4 von coros

Hi Petra,

wenn nicht die gesamte Zeile kopiert werden soll, dann tausche die VBA-Anweisung

Rows(Zeile).Copy Sheets(Zieltabelle).Cells(Zeile_Zieltabelle, 1)


gegen z.B.

Range(Cells(Zeile, 1), Cells(Zeile, 6)).Copy Sheets(Zieltabelle).Cells(Zeile_Zieltabelle, 1)


Mit der neuen Zeile wird Spalte A bis F kopiert. Wenn Du einen anderen Bereich kopieren möchtest, dann musst Du die Zahlen hinter dem Wort Zeile ändern. Die 1 steht für Spalte A, die 2 für Spalte B, eine 3 für Spalte C usw. Ich hoffe, ich habe das richtig verstanden. Wenn nicht, dann bitte noch mal erklären.

Das zweite mit dem Datum verstehe ich nicht so ganz, erklär das noch mal bitte.

MfG,
coros
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 5 von Petra65

Hallo,
also - der o. g. Code funzt leider nicht so recht (könnte ja an meiner eingefügten Spalte liegen??)

Dies hier ist der Code, den ich zur Zeit verwende:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Zeile_Zieltabelle As Long, Zieltabelle As String

If Target.Cells.Count > 1 Then Exit Sub

On Error Resume Next

If Target.Column = 7 Then
Zieltabelle = Target.Cells
Zeile = Target.Row
Zeile_Zieltabelle = Sheets(Zieltabelle).Range("A65536").End(xlUp).Offset(1, 0).Row
Cells(Zeile, 7).Copy Cells(Zeile, 9)
Rows(Zeile).Copy Sheets(Zieltabelle).Cells(Zeile_Zieltabelle, 1)
End If

Select Case Target.Value
Case "EF"
Target.Font.ColorIndex = 10
Case "BH"
Target.Font.ColorIndex = 25
Case "PH"
Target.Font.ColorIndex = 13
Case "AB"
Target.Font.ColorIndex = 53
Case "WB"
Target.Font.ColorIndex = 3
Case Else
Target.Interior.ColorIndex = xlNone
Target.Font.ColorIndex = 0
End Select

End Sub

-------------------------------------------------------------------

Und das mit dem Datum:
In der Tabelle, in der die Daten eingegeben werden gibt es ja die Felder "Weitergereicht am" und "Erledigt am" Das Feld "Erledigt am" soll aber erst befüllt werden, wenn ein Benutzer in seinem eigenen Tabellenblatt (z. B. EF) den Vorgang in der Spalte "Erledigt am" mit dem Datum versieht!

Nun klarer????????

Bis denne ...
Gruss
Petra

Antwort 6 von Petra65

Haaaaaaaaaaallt - Halt, alles zurück

Sorry - habe eben die falschen Zeilen getauscht.
Der Code funktioniert SUPER.

Bis auf das Ding mit dem Date!

Liebe Grüße und Entschuldigung... ....
:-)

Petra

Antwort 7 von coros

Hi Petra,

gut dass der Code funktioniert. Denn das wäre jetzt meine nächste Frage gewesen, was daran nicht funktionieren soll. Bei mir funzte er. Jetzt ja bei Dir auch.

Nun zu dem Datum. Kopiere nachfolgenden Code in das VBA Projekt "DieseArbeitsmappe".

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Zeile_Zieltabelle As Long
On Error Resume Next
If Target.Column = 8 Then
Zeile = Target.Row
Blattname = ActiveSheet.Name
Zeile_Zieltabelle = Sheets("Zieltabelle").Range("A65536").End(xlUp).Row
For Wiederholungen = 2 To Zeile_Zieltabelle
If Sheets(Blattname).Cells(Zeile, 1) = Sheets("Zieltabelle").Cells(Wiederholungen, 1) Then
Sheets(Blattname).Cells(Zeile, 8).Copy Sheets("Zieltabelle").Cells(Wiederholungen, 9)
End If
Next
End If
End Sub


Bei dem Code wird immer, wenn in Spalte H, also in Erledigt am, ein Eintrag getätigt wird, der Wert aus Spalte A, also die Nr., in der gleichen Zelle mit den Werten in Blatt "Zieltabelle" Spalte A verglichen. Wenn eine Übereisntimmunhg gefunden wurde, wird das Datum aus Spalte H in Spalte I in Blatt "Zieltabelle" kopiert. Es kann sein, dass Du die Spaltenindexzahlen (also die Zahlen hinter dem Wort Zeile) wieder an Deine Tabelle anpassen musst.

Teste das mal. Bei Fragen oder problemen melde Dich.

MfG,
coros
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 blaeppel

Hilfe, wer kann mir helfen!!!

Ich habe ein Formular angelegt mit einer Combo-Box. Dabei habe ich jetzt eine Auswahl zum selektieren drin stehen.z. B. 1, 2, 3 etc., Funktioniert auch bis dahin alles.

Nun möchte ich automatisch je nach Nummer die ich selektiere in diesem Formular das passende Bild angezeigt bekommen.

Hat jemand einen Tip für mich. Vielen Dank

Gruss
Blaeppel

Antwort 9 von Petra65

Hallo,

meine Tabelle funktioniert nun - super -
Muss erstmal ein dickes, DICKES Lob aussprechen.

Finde hier immer wieder sehr sehr gute Hilfe.

Danke!!!

Gruss
Petra

Antwort 10 von coros

Hi Petra,

freut mich, dass alles so funktioniert, wie Du es Dir vorgestellt hast. Danke Dir auch für Deine Rückmeldung.

@Blaeppel es ist weniger geschickt, Deine Frage in einem bestehenden Thread zu stellen. Da dieser fast abgeschlossen war, sinken die Chancen, dass Du eine Antwort erhälst. Mache nächstes mal besser einen eigenen Beitrag zu Deiner Frage auf.

Nun zu Deiner Frage. Ich habe Dir dazu mal eine Beispieldatei erstellt, die Du Dir auf meiner HP und dort dann in der Rubrik Beispieldateien und dann das Beispiel 36, herunterladen kannst. Dort habe ich mal 3 Textfelder angeordnet, die je nach Nummernauswahl aus einem Kombinationsfeld, eingeblendet werden. Ich habe Textfelden genommen, damit die Datei nicht zu groß zum Herunterladen wird. Man kann natürlich anstelle der Textboxen auch Bilder nehmen.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich. Dann aber bitte wieder hier in diesen Beitrag, da sonst der weitere Lösungsweg für andere zerissen wird.



MfG,
coros
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 11 von Blaeppel

Hallo Coros,

vielen Dank für Deinen Tip, auch mit dem eigenen Beitrag für zukünftige Probleme.
Vielleicht habe ich mich ein bisschen unglücklich ausgedrückt.
Das Bild soll nicht in einem Exel-Sheet, sondern in einem angelegten Formular an immer der gleichen Stelle angezeigt werden.
D. h. wenn ich in einem Sheet über einen Button das Formular angezeigt bekomme, besteht eine Combo-Box wo dann die Zahlen 1, 2, 3, etc anklicken kann. Wenn ich jetzt z.B. die 2 anklicke soll an einer gewissen Stelle auf diesem Formular das Bild angezeigt werden, klicke ich danach auf die 3 soll an der gleichen Stelle das dazu passende Bild angezeigt werden.
Die Bilder habe ich alle als Datei vorliegen. Ich bekomme nur nicht die Verlinkung zu der Nummer in der Combo-Box mit der entsprechenden Bild-Datei hin.
Hast du eventuell eine gute Idee?

Vielen Dank

Blaeppel

Antwort 12 von coros

Hi Blaeppel ,

was meinst Du mit einem Formular? Eine UserForm oder was?

Bitte beantworte die Frage, damit ich Dir da eventuell weiterhelfen kann.

MfG,
coros
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 blaeppel

Hi coros,

ja genau ich meine eine UserForm, sorry. In dieser UserForm habe ich dann die Combo-Box eingebaut und darin möchte ich dann auch die entsprechenden Bilder wie beschrieben angezeigt bekommen.

MfG
Blaeppel

Ps: Echt super wie schnell Du reagierst, Danke.

Antwort 14 von coros

Hi blaeppel,

kopiere nachfolgenden Code in Deine UserForm.

Private Sub ComboBox1_Change()
If ComboBox1 = 1 Then
Image1.Picture = LoadPicture("C:Müll

Antwort 15 von coros

Hi, ich noch mal,

da meine Antwort aus irgendwelchen Gründen abgeschnitten wurde und somit unvollstaändig ist, hier noch mal die komplette Antwort.

Kopiere also nachfolgenden Code in Deine UserForm.

Private Sub ComboBox1_Change()
If ComboBox1 = 1 Then
Image1.Picture = LoadPicture("C:Müll

Antwort 16 von coros

Hi, ich noch mal,

also spinn ich denn, ich würde ja gerne die komplette Antwort hier posten, aber irgendwie klappt das nicht. Also noch mal ein Versuch

Kopiere also nachfolgenden Code in Deine UserForm.

Private Sub ComboBox1_Change()
If ComboBox1 = 1 Then
Image1.Picture = LoadPicture("C:Müll

Antwort 17 von coros

Ich werde nicht mehr. @Blaeppel, nenn mir doch mal bitte Deine E-Mailadresse, dann schick ich Dir den Code per Mail zu. Wenn das hier nicht will, müssen wir halt auf einem anderen Weg die Lösung vollenden.

MfG,
coros
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 18 von blaeppel

Hi Coros,

hier meine Mail-Adresse blaeppel14@aol.com

Vielen Dank im voraus

MfG
Blaeppel

Antwort 19 von blaeppel

Hallo Coros,

an dieser Stelle nochmals ein DANKE SCHÖN für Deine Mühe und auch für die schnelle und promtpe Lösung meines Problemes.

Schönes Wochenende

Antwort 20 von blaeppel

Hallo Coros,

an dieser Stelle nochmals ein DANKE SCHÖN für Deine Mühe und auch für die schnelle und promtpe Lösung meines Problemes.

Schönes Wochenende

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: