Daten aus Tabelle1 in Tabelle2 exportieren und addieren - dabei auf zwei Kriterien achten?

Beispiel Excel ( https://filehorst.de/d/dcdbodji )

Insgesamt benötige ich zwei unterschiedliche Schaltflächen mit dem dazugehörigen VBA

Von der Tabelle "Einlagerung" werden die Daten für "Lagerinhalt" geliefert. Ich hätte hier also in der Tabelle "Einlagerung" gerne eine Schaltfläche die aber keine Daten von "Einlagerung" übertragen sollen ausschließlich Daten von "Lagerinhalt" zu "Bestand", nämlich folgende:

Schaltfläche "Bestand aktualisieren"

Diese soll die Daten aus Lagerinhalt in Bestand übertragen bzw. addieren - wichtig - immer nur die letzten hinzugefügten Daten.

Also welche Daten sollen von Lagerinhalt exportiert werden:

Zeile 7 -> I, K, N, O, Q, S also die Mengen der Artikel -> Dazu soll automatisch in Bestand geschaut werden nach folgenden Kriterien: 

Name also in Lagerinhalt B7 und dann der jeweilige Artikel

Die Tabelle "Bestand" soll sich automatisch nach Spalte A A-Z Sortieren und somit die Werte auch mit Sortieren bei den Artikeln

Ebenso soll in der Tabelle "Bestand" die Spalte A komplett aus Tabelle "Artikelliste" Spalte D übernommen werden.

Der Plan dahinter ist, wenn Artikel hinzugefügt werden müssen, macht man den Schritt nur einmal.

Die andere Schaltfläche die ich benötige ist - PrivatEinlagerung -> Diese bitte auch in der Tabelle PrivatEinlagerung

Hier sollen sich die Daten aus "PrivateEinlagerung" ziehen und nach selben Prinzip in "Bestand" aktualisiert werden.

Hintergrund ist - private Einlagerungen sollen nicht im "Lagerinhalt" auftauchen.

Die Artikel ziehen sich nach Dropdown Liste aus "Artikelliste"

Ziel ist es - Normale Einlagerungen über den Lagerinhalt nachkontrollieren zu können bzw mit dem Bestand abgleichen zu können - PrivatEinlagerungen sollen nur in den Bestand gepackt werden.

Computer, Excel, makro, VBA, VBA Programmierung, excel-formel, VBA Excel
1 Antwort
Würde gerne wissen wie ich aus Outlook ein Wort in Excel automatisch einfüge und es dann splitte (bsp ist unten)?

VBA Outlook Code

Option Explicit

Public Sub AnmeldedatenEintragen()

Dim xlApp       As Object

Dim xlRange     As Long

Dim WrdArray() As String

Dim xlBook      As Excel.Workbook

Dim xlSheet     As Excel.Worksheet

Dim vntTempArray As Variant

Dim obj As Object

 Select Case True

       Case TypeOf Application.ActiveWindow Is Outlook.Inspector

            Set obj = Application.ActiveInspector.CurrentItem

       Case Else

            With Application.ActiveExplorer.Selection

                 If .Count Then Set obj = .Item(1)

            End With

                If obj Is Nothing Then Exit Sub

 End Select

vntTempArray = Split(obj.Body, vbCrLf)

Set xlApp = New Excel.Application

       With xlApp

            .Visible = True

            .Workbooks.Open Environ("USERPROFILE") & "\Documents\Ziel\Tester.xlsx"

                Set xlBook = xlApp.Workbooks("Tester.xlsx")

                Set xlSheet = xlBook.Sheets("Kundenreaktionen")

                    With xlBook

                         With xlSheet

                         

                               xlRange = _

                                   .Range("A" & .Rows.Count).End(xlUp).Row + 1

                                   .Range("A" & xlRange) = Replace(vntTempArray(15), "Ergebnis       :", "")

                                   .Range("B" & xlRange) = Replace(vntTempArray(3), "Name           :", "")

                                   .Range("C" & xlRange) = Replace(vntTempArray(2), "Vorname        :", "")

                                   .Range("D" & xlRange) = Replace(vntTempArray(8), "Telefon 1      :", "")

                                   .Range("F" & xlRange) = Replace(vntTempArray(18), "Versicherungsnummer 1:         ", "")

                                   .Range("AH" & xlRange) = Replace(vntTempArray(5), "Straße         : ", "")

                                   .Range("AI" & xlRange) = Replace(vntTempArray(6), "PLZ            : ", "")

                                   .Range("AJ" & xlRange) = Replace(vntTempArray(7), "Ort            : ", "")

                                   

                       

                         End With

                       .Save

                       .Close

                    End With

               .Quit

       End With

ende:

xlRange = 0

Set xlSheet = Nothing

Set xlBook = Nothing

Set xlApp = Nothing

End Sub

BSP: ich bekomme zb. bei der F Zeile in Excel

vogel/pferd/katze/hund/affe

in  Outlooksieht die email soo aus:

Versicherungsnummer 1:         vogel/pferd/katze/hund/affe

nun zu meiner frage ich würde gerne diese zeile aufsplitten und halt nur zb Hund  in einer bestimmten Excel Tabelle bekommen

 

Excel, Outlook, makro, VBA, VBA Programmierung, VBA Makro, VBA-Code, VBA Excel
1 Antwort
VBA Frage (Outlook into Excel) wie bau ich mein Makro um damit er anstatt zeilen von Outlook, nur Wörter rüberkopiert?

kurzer Email-Ausschnitt:

Vorname        : Lala

Name           : John

KdNr           : 534534534534

Straße         : musterman str 1234

PLZ            : 123456

Ort            : Dorf

Telefon 1      : 123462356645

VBA Code ist:

Option Explicit

Public Sub AnmeldedatenEintragen()

Dim xlApp       As Object

Dim xlRange     As Long

Dim xlBook      As Excel.Workbook

Dim xlSheet     As Excel.Worksheet

Dim vntTempArray As Variant

Dim obj As Object

 Select Case True

       Case TypeOf Application.ActiveWindow Is Outlook.Inspector

            Set obj = Application.ActiveInspector.CurrentItem

       Case Else

            With Application.ActiveExplorer.Selection

                 If .Count Then Set obj = .Item(1)

            End With

                If obj Is Nothing Then Exit Sub

 End Select

vntTempArray = Split(obj.Body, vbCrLf)

Set xlApp = New Excel.Application

       With xlApp

            .Visible = True

            .Workbooks.Open Environ("USERPROFILE") & "\Documents\Ziel\Tester.xlsx"

                Set xlBook = xlApp.Workbooks("Tester.xlsx")

                Set xlSheet = xlBook.Sheets("Tabelle1")

                    With xlBook

                         With xlSheet

                              xlRange = _

                                   .Range("A" & .Rows.Count).End(xlUp).Row + 1

  .Range("A" & xlRange) = Replace(vntTempArray(15), "Reaktion: ", "")              

                               .Range("B" & xlRange) = Replace(vntTempArray(3), "Name: ", "")

                           .Range("C" & xlRange) = Replace(vntTempArray(2), "Vorname: ", "")

                  .Range("D" & xlRange) = Replace(vntTempArray(8), "Telefon_Nr1: ", "")

                    .Range("E" & xlRange) = Replace(vntTempArray(9), "Telefon_Nr2: ", "")

              .Range("F" & xlRange) = Replace(vntTempArray(10), "Telefon_Nr3: ", "")

               .Range("G" & xlRange) = Replace(vntTempArray(11), "Telefon_Nr4: ", "")

               .Range("I" & xlRange) = Replace(vntTempArray(18), "Versicherungs Nr: ", "")

                           

                                  

                       

                         End With

                       .Save

                       .Close

                    End With

               .Quit

       End With

ende:

xlRange = 0

Set xlApp = Nothing

Set xlApp = Nothing

Set xlApp = Nothing

End Sub

JEDENFALLS, würde ich gerne anstatt das mir dieser Code die ganze Zeile kopiert also : Vorname        : Lala   will ich halt nur "Lala"

Vielen Dank für die Hilfe!

 

 

Outlook, makro, VBA, Code, VBA Excel
2 Antworten
Wie mache ich einen iCue Beleuchtungs Hotkey mit Razer Tastatur?

Also ich habe 6 Corsair Lüfter und würde gerne für einzelne Effekte einen Hotkey kreieren. Das ist aber nicht so einfach, da ich ja keine Corsaie Tastatur habe und somit keine Hotkeys für in iCue belegen kann (soweit ich weiß).

Also ich habe eine Razer Tastatur und habe mir da eigentlich etwas relativ akzeptables einfallen lassen.
Man kann in iCue bestimmte Effekte dann automatisch aktivieren lassen sobald man ein bestimmtes Programm startet. Das Programm kann man frei auswählen und auf den Makro Tasten meiner Tastatur kann ich auch einstellen das beim Knopf einer bestimmten Taste ein bestimmtes Programm geöffnet wird, welches wiederum dafür sorgt das der Beleuchtungseffekt geändert wird. Aber ich möchte egal was ich spiele jeden beleuchtetungseffekt benutzen können wann immer ich will. Ich würde also gerne wissen ob es einen anderen Weg gibt oder wo/wie ich kleine Programme Bzw .exe Dateien (glaube ich) herbekomme oder erstellen kann die keinen großen Verbrauch haben und sofort geöffnet werden. Beispielsweise ein Textsokument, ein Bild oder anderndinge die sich einfach sofort öffnen und nur wenig Arbeitsspeicher verbrauchen aber in Programmform.
Also falls ihr Ideen oder am besten einfachere oder unkompliziertere Vorschläge habt, teilt sie mir doch bitte mit :)

Und ja mir ist klar, dass das eigentlich kein wirkliches Problem ist und ziemlich nebensächlich ist aber es macht mir 1. einfach Spaß eine ausgeklügelte Lösung zu finden und 2. möchte ich wissen ob und wie es evtl. unkompliziert geht.

Danke für Hilfe im Voraus.

Computer, Technik, Programm, makro, Beleuchtung, .exe, Razer, Technologie, Hotkey, Corsair, Spiele und Gaming, iCUE
1 Antwort
Wegen Makros auf MFT umsteigen oder bei APS-C bleiben?

Ich überlege, ob ich mir eine Olympus E-M5 MK3 oder doch die Fuji X-T30 nächstes Jahr holen soll und kann mich noch nicht so entscheiden.

Momentan nutze ich Fuji, habe auch natürlich mehrere Objektive u. a. das 60er Makro. Damit bin ich auch eigentlich zufrieden qualitativ, aber mit dem Makro stoße ich abends bei Insekten oft an meine Grenzen, da es sich manchmal nicht vermeiden lässt das die Tiere flüchten. Da ich auch mal Bilder frei Hand mache ist der fehlende BS nicht ganz so optimal.Teilweise nutze ich dann auch ein 50-230 und Zwischenring, aber es ist nicht ganz so scharf wie das Makro. Damit reize ich meine Kamera zumindest nicht aus. Nun gibts auch ein 80er Makro, was aber um die 1000 Euro kostet....eigentlich schon sehr grenzwertig.

Bei der Olympus reizt mich u. a. der sehr gute Bildstabi in der Kamera, der mit dem 60er Oly Makro noch gesteigert wird. Durch höheren Cropfaktor komme ich auch etwas näher bzw. ist identisch wie das 80er Fuji. Der Preis ist auch deutlich geringer.

Zwar will ich mich in Zukunft überwiegend auf Makros konzentrieren, aber bei Olympus hätte ich immer noch die Möglichkeit Objektive mit höherer Brennweite sehr günstig zu kaufen z. B. das 70-300 oder ein ähnliches Objektiv bei Panasonic kosten glaub ich nicht mehr als lächerliche 500 Euro. Bei Fuji müsste ich für das 100-400 das 4 - fache zahlen.

Das sind so die Gedanken, die ich mir mache. Schwierige Sache.

Foto, Kamera, Bilder, Fotografie, makro
5 Antworten
VBA Code zu lang. Wie kann der Code aufgeteilt bzw. abgerufen werden?

Hallo zusammen,

ich habe immer noch folgendes Problem. Mein Code soll alle möglichen Strecken in einem Lager berechnen und hat dazu die Strecken zwischen Knotenpunkten zur Verfügung.

Ein Beispiel ist zum Beispiel die Strecke zwischen Knotenpunkt 1 und 2

Knoten1 zu Knoten2 sind 332 Einheiten --> In einer Zelle zusammengefasst wäre das dann

E(1,2)=332

Dieser Zelleninhalt wurde bisher immer in den VBA Code übernommen, da das berechnete Lagert nicht sehr groß war. Nun überschreitet durch die Größe des Lagers der Code die maximale Anzahl (64k) an Zeichen.

Meine Frage lautet nun, wie ich über das Tabellenblatt auf die Spalte zugreifen kann, dass sich der Code diese Information automatisch holt und diese nicht im Code selbst stehen muss.

Ich hoffe das ist verständlich erklärt. Der Code ist unten angehängt (lediglich von mir angepasst, nicht mein Code), dabei sind die E(x,y)=XXX lediglich Beispiele, dass man sehen kann, wo diese im Code stehen.

Vielen Dank

'Dijkstra globals

Const MaxGraph As Integer = 400 'max. number of nodes in graph

Const Infinity = 1E+308

Dim E(1 To MaxGraph, 1 To MaxGraph) As Double 'the edge costs (Infinity if no edge)

Dim A(1 To MaxGraph) As Double         'the distances calculated

Dim P(1 To MaxGraph) As Integer        'the previous/path array

Dim Q(1 To MaxGraph) As Boolean        'the queue

  

Public Sub Dijkstra(n, start)

 'simple implementation of Dijkstra's algorithm

 'n = number of nodes in graph

 'start = index of start node

 'init distances A

  For j = 1 To n

   A(j) = Infinity

  Next j

  A(start) = 0

 'init P (path) to "no paths" and Q = set of all nodes

 For j = 1 To n

  Q(j) = True

  P(j) = 0

 Next j

 

 Do While True 'loop will exit! (see below)

  dist = Infinity

  For i = 1 To n

   If Q(i) Then

    If A(i) < dist Then

     dist = A(i)

     u = i

    End If

   End If

  Next i

  If dist = Infinity Then Exit Do 'no more nodes available - done!

  Q(u) = False

  For j = 1 To n

   If Q(j) And E(u, j) <> Infinity Then

    alt = A(u) + E(u, j)

    If alt < A(j) Then

     A(j) = alt

     P(j) = u

    End If

   End If

  Next j

 Loop

End Sub

 

Public Function GetPath(source, target) As String

 Dim path As String

 If P(target) = 0 Then

  GetPath = "No path"

 Else

  path = ""

  u = target

  Do While P(u) > 0

   path = Format$(u) & " " & path

   u = P(u)

  Loop

  GetPath = Format$(source) & " " & path

 End If

End Function

 

 

Public Sub DijkstraTest()

' number of nodes

n = 324

For i = 1 To n

 For j = 1 To n

  E(i, j) = Infinity

 Next j

 P(i) = 0

Next i

E(1, 167) = 5

E(1, 249) = 10

E(2, 29) = 12

E(2, 68) = 6

E(3, 7) = 11

For v = 1 To n

 Dijkstra n, v

 'Print solution

 Debug.Print "From", "To", "Cost", "Path"

 For j = 1 To n

  If v <> j Then Debug.Print v, j, IIf(A(j) = Infinity, "---", A(j)), GetPath(v, j)

 Next j

 Debug.Print

Next v

End Sub

VBA Code zu lang. Wie kann der Code aufgeteilt bzw. abgerufen werden?
Windows, Excel, makro, VBA, Excel VBA, MS-Office, VBA Programmierung, VBA Makro, VBA Excel
2 Antworten
Systematik zum Ordnen/Speichern von VBA-Makros?

Hallo Excelianer,

1) Alle Makros, die man in seiner persönlichen Arbeitsmappe speichert, stehen einen immer zur Verfügung.

2) Makros, die man in einer separaten Arbeitsmappe speichert, stehen einem nur in dieser Arbeitsmappe zur Verfügung (oder wenn diese Mappe geöffnet ist).

Zum Speichern von Makros hätte ich mal eine Frage: Wo speichert ihr Makros ab, die man in mehreren (nicht allen) Exceldateien benutzen möchte?

a) in der Mappe: Personal.xlxb
b) oder in der eigenen Arbeitsmappe

Wenn ich ein kleines Makro schreibe, das ich in mehreren Excel-Dateien benötige, lege ich in Personal ab, ist schon klar. Aber irgendwann wird Personal.xlxb immer voller und unübersichtlicher. Also weg damit in die drei, vier Arbeitsmappen, in denen ich dieses Makro verwende. Aber, bei jeder Änderung im Quellcode muss ich entweder damit leben, dass es unterschiedliche aber ähnliche Druckmakros gibt, oder ich muss die Änderung in allen Kopien nachziehen (mehrfache Datenhaltung).

Ich glaube man merkt mein Dilemma: Entweder mehrfache Kopien pflegen oder mit einem Wust an Makros in Personal.xlxb leben, und evtl. mit Namenskonventionen etwas Ordnung in die Namensliste der Makros in Personal bringen.

Bestimmt hast du mehr Excel-Makros als ich und daher schon einen Weg gefunden. Ich wollte das mal grundsätzlich für mich entscheiden, was der bessere Weg ist, oder gibt es einen dritten (und/oder vierten Weg)?

Gibt es dazu Literatur oder ein Tutorial?

Gruß Distel

Computer, Excel, makro, VBA, systematik
3 Antworten

Meistgelesene Fragen zum Thema Makro