Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array Typen unverträglich

Array Typen unverträglich
16.01.2019 09:19:34
Rasenack
Ich wünsche allen hier einen guten Morgen,
hab da mal ein kleines Problem beim Befüllen eines Arrays. Unzwar füllt mein Code den Array, wenn ich ihn ohne Klammern deklariere. Soweit so gut, allerdings kann ich zu Testzwecken keine Position des Arrays in einer Messagebox ausgeben lassen, sondern nur den gesamten Array. Füge ich Klammern an den Array bei Deklaration, bekomme ich in der Zeile
zeilen() = zeilen + Cells(i, 1).Value & " "

eine Fehlermeldung, dass die Typen unverträglich sind unzwar genau bei dem Pluszeichen. Ich benötige aber entsprechende Positionen im weiteren Verlauf des Codes(der noch nicht existiert).
Kann mir jemand erklären warum das so nicht funktioniert bzw. sagen wie es funktionieren kann.
Ich wäre sehr dankbar für jede Hilfe.
Sub Test()
Dim zeilen As Variant
Dim leere_zeile As Integer
Dim i As Integer
Range("A1").Select
leere_zeile = Selection.CurrentRegion.Rows.Count
For i = 1 To leere_zeile
If IsEmpty(Cells(i, 1)) = False Then
zeilen = zeilen + Cells(i, 1).Value & " "
End If
Next i
MsgBox zeilen(2)
End Sub

35
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array Typen unverträglich
16.01.2019 10:07:32
Nepumuk
Hallo,
es geht aus deinem Code leider nicht hervor, auf was das Ganze hinauslaufen soll.
In der Zeile:
zeilen = zeilen + Cells(i, 1).Value & " "
erzeugst du im Prinzip eine Zeichenkette aus allen Werten in Spalte A. ABER das Plus-Zeichen funktioniert zum Verketten von Strings nur, wenn tatsächlich ein String in der Zelle steht. Sobald da eine Zahl drin steht, läufst du in diesen Fehler.
Was willst du genau? Ein Array mit allen Werten in Spalte A ?
Gruß
Nepumuk
Nachtrag
16.01.2019 10:12:46
Nepumuk
Hallo nochmal,
vielleicht was das gemeint:
Sub Test()
Dim avntValues As Variant
avntValues = Application.Transpose(Range(Cells(1, 1), _
Cells(Rows.Count, 1).End(xlUp)).Value)
MsgBox avntValues(2)
End Sub

Gruß
Nepumuk
Anzeige
AW: Array Typen unverträglich
16.01.2019 10:20:45
Rasenack
Vielen Dank schon mal für die schnelle Antwort. Das ganze Thema wird noch sehr ausführlich, aber hängt ja schon bei solchen Kleinigkeiten. Unzwar stehen in der Spalte A1 fortlaufende Änderungsnummern mit Buchstaben und Zahlen Bsp: TK-128/18 TK-129/18 . Aber die Zellen sind teilweise verbunden, weil das Feld rechts von den Nummern unterschiedlich groß sein kann (unterschiedlich viele Änderungen), daher diese Zeilen am Anfang. Nun soll in einem Array alles im Ist-Zustand eingetragen werden(global) und nach einer nächsten Änderung(neue Zeile mit TK...) ein neuer Array(lokal) erstellt werden.
Dann sollen die Arrays verglichen werden und die geänderten Stellen, über die Differenz der Ubound's, in einem String landen und per Email mit Text versendet werden. Anschließend wird der neue Array global gesetzt, um später wieder so verfahren zu können.
Anzeige
AW: Array Typen unverträglich
16.01.2019 11:59:37
Nepumuk
Hallo,
kannst du eine Mustermappe hochladen?
Gruß
Nepumuk
AW: Array Typen unverträglich
16.01.2019 12:41:20
Rasenack
https://www.herber.de/bbs/user/126808.xlsx
Hier ist mal ein Ausschnitt der Mappe. Ich glaube das Problem wird noch komplizierter als gedacht. Ich benötige ja irgendwie einen Ausgangszustand der TK-Nummern, wenn ich jetzt an das Jahr 2020 denke, dann möchte ich ein neues Tabellenblatt einfügen beispielsweise und die Tabelle von vorn beginnen. Nun könnte ich ja den Array, der neu erstellt wird, nicht mit einem Array vergleichen und somit wird ja keine Änderung hervorgerufen und keine Email gesendet. Ich hatte ja an das Workbook_open Ereignis gedacht, dass dann alle Daten einsammelt und anschließend das Before_close die Daten vergleicht und eine Email sendet. Was ist aber wenn ich noch nicht alle Änderungen erledigt habe z.B am heutigen Tag und die Datei öfters öffne, dann würden ja die Einlesedaten überschrieben werden.
...Weiß irgendwie nicht mehr wie ich an das Problem rangehen soll. Die Idee war eigentlich sehr einfach
Anzeige
AW: Array Typen unverträglich
16.01.2019 13:49:10
Rasenack
Der Schlüsselpunkt liegt ja eigentlich bei "Ich habe die Email gesendet". Damit lege ich ja fest, dass die werte sich geändert haben. Kann man denn das Workbokk_open Ereignis irgendwie damit verknüpfen?
Also per If- Abfrage steuern, dass wenn Email gesendet, dann lese die Daten erneut ein. Somit hätte ich ja wieder einen neuen Ausgangspunkt im Array, der verglichen werden könnte mit dem aktuellen Array.
AW: Array Typen unverträglich
16.01.2019 14:21:03
Nepumuk
Hallo,
ich kann deinen Ausführungen nicht folgen. Versuch doch mal das Ganze so zu erklären wie einem 5-jährigen, dann versteh ich das auch. Ich kenn nämlich deine Anforderung nicht und kann mir unter z.B. "Ich habe die Email gesendet" nichts vorstellen.
Dein Array ohne Leerstellen kannst du so erzeugen:
Public Sub Test()
    
    Dim avntInput As Variant, avntOutput() As Variant
    Dim vntItem As Variant
    Dim ialngIndex As Long
    
    avntInput = Range(Cells(1, 1), _
        Cells(Rows.Count, 1).End(xlUp)).Value
    
    For Each vntItem In avntInput
        If Not IsEmpty(vntItem) Then
            Redim Preserve avntOutput(ialngIndex)
            avntOutput(ialngIndex) = vntItem
            ialngIndex = ialngIndex + 1
        End If
    Next
    
    If ialngIndex > 0 Then MsgBox avntOutput(0)
    
End Sub

Beachte, das Array ist Null-basiert sprich der erste Index liegt bei avntOutput(0)
Gruß
Nepumuk
Anzeige
AW: Array Typen unverträglich
16.01.2019 14:39:10
Rasenack
Okay kann ich verstehen, dass es immer schwierig ist sich in andere Projekte oder Vorstellungen reinzudenken sorry.
Also die Tabelle erfährt regelmäßig Änderungen unzwar so, dass ich neue TK-Nummern hinzufüge, was einer Änderung in der Konstruktion entspricht.
Wenn eine neue Änderung (oder manchmal mehrere am Tag) hinzukommt, soll eine Email an den Arbeitsvorbereiter gesendet werden, in der dann der/die geänderten Tk-Nummern mit enthalten sind.
Hierzu muss erstmal die Logik her, die diese geänderten Werte erfasst und in einen String überführt.
Nun wollte ich es so machen, dass ich alle werte fortlaufend erfasse und global abspeichern. Ä _ ndert sich jetzt was, dann einen neuen Array erstellen, der mit dem vorhergehenden verglichen wird. Sozusagen

die Stellen erfassen die dem Array hinzugefügt wurden -> isolieren -> in String schreiben ->  _
Email senden.
Es kann aber sein, dass ich noch nicht alle Änderungen für heute erfasst habe und somit noch keine Email schreiben möchte, sondern erstmal nur die Datei speichere oder so. Würde ich dann die Daten im eigentlichen Ist-Zustand über das open-Ereignis einlesen, dann wäre der eigentliche Ist-zustand überschrieben und ich könnte nicht mehr erfassen, welche Nummern sich eigentlich geändert haben.
Hoffe ich konnte es jetzt ein wenig besser beschreiben :-)
Kann auch sein, dass ich mit meiner Idee auf dem Holzweg bin.
Anzeige
AW: Array Typen unverträglich
16.01.2019 14:50:34
Nepumuk
Hallo,
Ahh, jetzt ist alles klar. Du müsstest das Mail dann per Button starten. Wäre das in Ordnung? Welcher Mail-Client (ich hoffe Outlook)?
Gruß
Nepumuk
AW: Array Typen unverträglich
16.01.2019 14:59:40
Rasenack
Das Problem mit dem Button, was ich sehe ist, dass er ja fest auf dem Arbeitsblatt "installiert" wäre. Wollte eigentlich dann ergänzend bei einem Jahreswechsel ein neues Tabellenblatt einfügen, damit die Tabelle wieder von vorne gefüllt werden kann. Der Button wäre ja dann weg oder?
Ja es ist Outlook ;-)
AW: Array Typen unverträglich
16.01.2019 15:39:16
Nepumuk
Hallo,
ist die Jahreszahl im Tabellennamen integriert? Wenn ja, dann würde ich immer die neueste nehmen. Oder änderst du auch mal eine "alte" Tabelle?
Gruß
Nepumuk
Anzeige
AW: Array Typen unverträglich
16.01.2019 20:03:13
Rasenack
Sorry, das ich jetzt erst schreibe, war leider unterwegs.
Also ich habe beim Öffnen der Datei eine Schleife, die überprüft, ob das aktuelle Tabellenblatt mit dem aktuellen Jahr übereinstimmt, wenn nicht legt es mir ein neues mit dem neuen Jahr als Namen an ;-)
Alte Tabellenblätter werden nicht mehr bearbeitet.
Liebe Grüße und vielen Dank für die Unterstützung.
AW: Array Typen unverträglich
16.01.2019 21:07:38
Nepumuk
Hallo,
ich lade dir eine Mappe mit den erforderlichen Makros und einem neuen Tab (MAIL) im Ribbon. Darin findest du einem Button zum senden des Mails. Der Code ist in der hochgeladenen Mappe nicht lauffähig da es keine Tabelle mit dem Namen 2019 gibt. Öffne beide Mappen und kopiere die Tabellen deiner Mappe in meine. Dann kopierst du den Code im VBA-Editor. Standardmodule, Klassenmodule und UserForms kannst du per Drag&Drop im Projektexplorer kopieren. Den Code im Klassenmodul "DieseArbeitsmappe" must du per Copy&Paste von deiner Mappe in meine übertragen. Beachte dabei, dass die eine Codezeile von mir im Open-Event erhalten bleibt bzw. kopiere diese Zeile in dein Open-Event und lösche meinen.
Dann schließe beide Mappen und öffne meine. Damit wird das Array angelegt und als Name abgespeichert. Sobald du Daten einträgst und auf den Mail-Button klickst werden die Daten im gespeicherten Array mit denen in der Tabelle verglichen und für die neu hinzugekommenen eine Mail erstellt. Dann wird das Array mit den neuen Daten gespeichert.
Du musst in Code noch die Mailadresse (.To = ..), den Betreff (.Subject = ..) und den Text in der Mail (.Body = ..) anpassen. Du kannst wählen ob die Mail angezeigt (.Display) oder direkt gesendet (.Send) wird. Eingestellt ist anzeigen.
Wenn du die Mail nicht sendest sondern löschst, dann hast du keine Möglichkeit mehr diese Mail nochmal zu erstellen !!! Wenn du willst kann ich dir da aber noch eine Sicherheitsabfrage einbauen.
https://www.herber.de/bbs/user/126833.xlsm
Gruß
Nepumuk
Anzeige
AW: Array Typen unverträglich
17.01.2019 09:05:02
Rasenack
Ich bin wirklich begeistert. Es funktioniert alles tadellos. Ich weiß gar nicht was ich sagen soll.
Vielen vielen Dank für deine Mühe. Ich werde mich jetzt mal Zeile für Zeile durcharbeiten, um zu verstehen wie der Code funktioniert. Viele Sachen sind neu für mich und mit meinem VBA-Wissen komme ich nicht richtig klar damit.
Viele liebe Grüße
André
AW: Array Typen unverträglich
17.01.2019 09:13:52
Nepumuk
Hallo André,
bei Unklarheiten einfach nachfragen.
Gruß
Nepumuk
AW: Array Typen unverträglich
17.01.2019 09:43:25
Rasenack
Also die Sub SendMail() verstehe ich noch recht gut. Die Sub AddName() und Sub SaveArray() bereiten mir Kopfzerbrechen. Was ist das Prinzip dahinter bzw. wie funktioniert es im Detail?
Liebe Grüße
Anzeige
AW: Array Typen unverträglich
17.01.2019 10:05:43
Nepumuk
Hallo André,
das Array wird unter einem unsichtbaren Namen gespeichert. Das sind die selben Namen wie du sie im Tab-Formeln - Namens-Manager anlegen kannst. Das ist ein wenig bekannte Möglichkeit.
Gruß
Nepumuk
AW: Array Typen unverträglich
17.01.2019 10:26:53
Rasenack
Also spricht man dann den Array über diesen Namen an, der konstant gesetzt ist. Verstehe ich das richtig?
Hab noch ein kleines Problem unzwar öffnet er mir ein neues Tabellenblatt mit dem aktuellen Jahr. Gibt es zusätzlich eine Möglichkeit das Format der Tabelle vom vorherigen Tabellenblatt zu übertragen? Ich habe den Schritt "Format übertragen" mittels Makrorekorder aufgezeichnet. Diesen Code dann mit ins Open-Ereignis eingetragen. Die Einzelschritte durch den Code zeigen, dass er alles auswählt etc., aber nicht das Format überträgt.
Der Code
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets(strJahr).Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Anzeige
AW: Array Typen unverträglich
17.01.2019 13:20:57
Nepumuk
Hallo André,
kann ich nicht nachvollziehen. Aber diese 3 Zeilen genügen:
Worksheets(strVorjahr).Cells.Copy
Worksheets(strJahr).Cells.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False

Gruß
Nepumuk
AW: Array Typen unverträglich
17.01.2019 13:24:49
Rasenack
Hallo Nepumuk, ich bin es nochmal
Problem mit dem Format gelöst.
Hab noch eine Frage zu deinem Code. Muss ich nachdem nächstes Jahr ein neues Tabellenblatt angelegt wird, wieder eine Email schreiben als "Auslöser"? Diese wäre ja dann leer, weil keine Werte am Anfang drin stehen. Wäre nicht schlimm nur gut zu wissen, dann würde ich mir nur eine Msgbox einbauen, die mich daran erinnert ;-)
Liebe Grüße
AW: Array Typen unverträglich
17.01.2019 13:52:53
Nepumuk
Hallo André,
nein, das ist nicht notwendig. Das Tabellenblatt wird ja vor meinem Aufruf "Call AddName" erstellt und da wird erst das alte Array gelöscht und ein neues leeres angelegt. Wobei ich davon ausgegangen bin, dass du das neue Tabellenblatt per Makro im Open-Event anlegst.
Gruß
Nepumuk
AW: Array Typen unverträglich
17.01.2019 14:05:59
Rasenack
Okay alles klar. Nur um ganz sicher zu sein, dass alles so passt hier der Code im Open-Event:
Private Sub Workbook_Open()
Dim aktJahr As Boolean
Dim strJahr As String
Dim vorjahr As String
Dim i As Object
aktJahr = False
strJahr = Format(Now, "yyyy")
vorjahr = Year(Date) - 1
For Each i In Me.Sheets
If i.Name = strJahr Then aktJahr = True
Next
If aktJahr = False Then
Sheets(vorjahr).Cells.Copy
Sheets.Add.Name = strJahr
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets(vorjahr).Range("A1:O2").Copy
Sheets(strJahr).Paste Destination:=Sheets(strJahr).Range("A1")
Application.CutCopyMode = False
Call AddName
End Sub
Nicht dass ich mit meinem VBA-Halbwissen deine ganze Vorarbeit ruiniere ;-)
AW: Array Typen unverträglich
17.01.2019 14:23:28
Nepumuk
Hallo André,
ein bisschen "schöner geht es schon. Zudem fehlt ein End If
Option Explicit

Private Sub Workbook_Open()
    
    Dim blnaktJahr As Boolean
    Dim strJahr As String
    Dim strVorjahr As String
    Dim objWorksheet As Worksheet
    
    strJahr = Year(Date)
    strVorjahr = Year(Date) - 1
    
    For Each objWorksheet In Worksheets
        If objWorksheet.Name = strJahr Then blnaktJahr = True
    Next
    
    If Not blnaktJahr Then
        
        Call Worksheets(strVorjahr).Cells.Copy
        
        Worksheets.Add(Before:=Worksheets(1)).Name = strJahr
        
        With Worksheets(strJahr)
            
            Call .Cells.PasteSpecial(Paste:=xlPasteFormats)
            Call .Cells(1, 1).Copy
            Call .Cells(1, 1).PasteSpecial(Paste:=xlPasteFormats)
            
            Call Worksheets(strVorjahr).Range("A1:O2").Copy(Destination:=.Range("A1"))
            
        End With
        
        Application.CutCopyMode = False
        
        Call AddName
        
    End If
End Sub

Gruß
Nepumuk
AW: Array Typen unverträglich
17.01.2019 14:58:36
Rasenack
Das End If hatte ich nur nicht mitkopiert. Mir ist jetzt aufgefallen, dass die gesamte Formatübertragung keinen Sinn macht, sondern nur für den Tabellenkopf relevant wäre und für die vertikalen Rahmen die vorhanden sind (habe ich noch nicht in den Code eingefügt). Dazu habe ich ein paar Zeilen abgeändert. Dann kommt aber, der Arbeitsspeicher sei nicht ausreichend...Was denn nun schon wieder. Ich komm mir langsam doof vor dich immer zu belästigen. Nimm es mir bitte nicht übel
If Not blnaktJahr Then
Call Worksheets(strVorjahr).Range("A1:O2").Copy
Worksheets.Add(Before:=Worksheets(1)).Name = strJahr
With Worksheets(strJahr)
Call .Range("A1:O2").PasteSpecial(Paste:=xlPasteFormats)
'Call .Cells(1, 1).Copy
'Call .Cells(1, 1).PasteSpecial(Paste:=xlPasteFormats)
Call Worksheets(strVorjahr).Range("A1:O2").Copy(Destination:=.Range("A1"))
End With
Application.CutCopyMode = False

AW: Array Typen unverträglich
17.01.2019 15:09:11
Rasenack
Bzw wenn der Code wie erst geposted ist, dann übernimmt er nicht das vollständige Format.
Mit dem Arbeitsspeicher kam nur wenn ich Range() durch Cell ersetzt habe in der With Anweisung
AW: Array Typen unverträglich
17.01.2019 15:29:13
Nepumuk
Hallo André,
wenn du sowieso nur die ersten zwei Zeilen kopierst, dann genügt das:
Option Explicit

Private Sub Workbook_Open()
    
    Dim blnFound As Boolean
    Dim strJahr As String
    Dim objWorksheet As Worksheet
    
    strJahr = Year(Date)
    
    For Each objWorksheet In Worksheets
        If objWorksheet.Name = strJahr Then blnFound = True
    Next
    
    If Not blnFound Then
        
        Worksheets.Add(Before:=Worksheets(1)).Name = strJahr
        
        Call Worksheets(Year(Date) - 1).Range("A1:O2").Copy( _
            Destination:=Worksheets(strJahr).Range("A1"))
        
        Call AddName
        
    End If
End Sub

Leider waren in deiner Mustermappe keine Überschriften. Daher ging ich davon aus, dass die Daten in Zeile 1 beginnen. Nun stellt sich heraus, dass die Daten erst in der 3. Zeile beginnen. Daher musst du noch etwas ändern. In der Prozedur SaveArray und in der Prozedur SendMail diese Zeile:
avntInput = .Range(.Cells(3, 1), _
    .Cells(Rows.Count, 1).End(xlUp)).Value

Dazu eine Bitte. Wenn du nochmal eine Mustermappe hochlädst, dann bitte so wie sie wirklich ist und nicht nur so ungefähr.
Gruß
Nepumuk
AW: Array Typen unverträglich
18.01.2019 10:20:08
Rasenack
Da hast du vollkommen Recht, ich hätte die Originale hochladen sollen. Entschuldige bitte.
Das mit der Formatierung hat jetzt geklappt. Das Problem waren veränderte Spaltenbreiten, die er nicht mit übernommen hat. Klappt aber jetzt endlich. Nun noch eine kleine Frage. Unzwar möchte ich im nächsten Jahr die Tabelle von diesem Jahr übernehmen. Der Tabellenkopf wird ja nun ordentlich übernommen. Jetzt habe ich eine Schleife geschrieben, die mir in Abhängigkeit der jeweiligen rechten Rahmen in Zeile 2 (dick;dünn), die gesamte Spalte bis unten genauso mit einem rechten Rahmen versehrt. Meine Scghleife zeigt keinerlei Fehler, allerdings macht sie gar nichts. Hättest du noch einen Tipp warum das so nicht funktioniert? Hab mich für Cells() entschieden, weil Range() irgendwie schlecht zu verarbeiten ist in der Schleife glaube ich. Klar könnte man auch alles per Hand formatieren, aber wenn es schon automatisch alles andere macht, dann doch sowas auch gleich mit ;-)
Dim zelle As Object
With Worksheets("Tabelle1")
For Each zelle In Range("A2:O2")
If zelle.Borders(xlEdgeRight).LineStyle = xlContinuous Then  '& zelle.Borders(xlEdgeRight). _
Weight = xlMedium Then
Cells(zelle.Offset(, 1).Rows.Count, zelle.Column).Borders(xlEdgeRight).LineStyle =  _
xlContinuous
Cells(zelle.Offset(, 1).Rows.Count, zelle.Column).Borders(xlEdgeRight).Weight = zelle. _
Borders(xlEdgeRight).Weight
End If
Next zelle
End With
End Sub
Der Tabellenkopf sieht im Original so aus wie in der angehängten Datei zu sehen.
Bin dir ein riesiges Dankeschön schuldig.
Viele Grüße
https://www.herber.de/bbs/user/126902.xlsx
AW: Array Typen unverträglich
18.01.2019 11:25:03
Nepumuk
Hallo André,
haben denn die Zellen A2:O2 überhaupt einen Rahmen auf der rechten Seite?
Mit der Konstruktion:
Cells(zelle.Offset(, 1).Rows.Count, zelle.Column)
setzt du einen Rahmen in der letzten Zelle der Tabelle. Also in Zeile 1.048.576 denn das ist der Wert der Rows.Count zurück gibt. Zudem versetzt du mit deinem Offset die Rahmenlinie um eine Spalte nach rechts. Offset hat folgende Syntax: Offset(Zeilenoffset, Spaltenoffset)
Versuch es mal so:
Public Sub test()
    Dim zelle As Range
    
    For Each zelle In Worksheets("Tabelle1").Range("A2:O2")
        
        If zelle.Borders(xlEdgeRight).LineStyle = xlContinuous Then '& zelle.Borders(xlEdgeRight). _
                Weight = xlMedium Then

            
            zelle.Offset(1, 0).Resize(.Rows.Count - 2, 1).Borders(xlEdgeRight).LineStyle = _
                xlContinuous
            zelle.Offset(1, 0).Resize(.Rows.Count - 2, 1).Borders(xlEdgeRight).Weight = _
                zelle.Borders(xlEdgeRight).Weight
            
        End If
    Next zelle
End Sub

Gruß
Nepumuk
AW: Array Typen unverträglich
18.01.2019 14:15:54
Rasenack
Hallo Nepumuk, du bist ein Genie :-)
Ich versuche jetzt mal zu verstehen was die Funktion Resize macht.
Vielen Dank und ein schönes Wochenende :-)
Nachtrag
17.01.2019 05:13:51
Nepumuk
Hallo,
ich hab noch was vergessen. Nachdem du die Mappe eingerichtet hast, musst du einmal eine Mail erzeugen damit die schon vorhandenen Einträge in das Array übernommen werden.
Gruß
Nepumuk
AW: Array Typen unverträglich
16.01.2019 14:53:03
PeterK
Hallo
Wieso erzeugst Du keine Kopie deines Arbeitsblattes statt dem Array?
Ablauf (Email muss aktiv gesendet werden!):
- Makro Email senden aufrufen
- Aktuelle Tabelle mit der Kopie vergleichen und Änderungen erkennen
- Die Änderungen in Email schreiben
- Email absenden
- Kopie löschen
- Neue Kopie des Arbeitsblattes erzeugen
AW: Array Typen unverträglich
16.01.2019 15:02:32
Rasenack
Das wäre natürlich auch eine Variante, allerdings wäre ich dann völlig überfordert, wie das gehen soll. Es müsste ja lediglich die Änderung in der Spalte 1, besser gesagt nur die geänderten TK-Nummern in der Email zu sehen sein. Der Arbeitsvorbereiter hat ja Zugang zur Datei, allerdings soll er sich nicht immer durch alle Nummern durcharbeiten müssen, sondern nur auf die entsprechenden hingewiesen werden.
AW: Array Typen unverträglich
16.01.2019 15:06:58
PeterK
Hallo
Wenn Du zwei Arrays vergleichen kannst (und etwaige Änderungen erkennst) , kannst Du auch zwei Tabellenreihen vergleichen.
AW: Array Typen unverträglich
16.01.2019 15:21:14
Rasenack
Hallo,
beim Array würde ich ja die Längen vergleichen und die Differenz mit entsprechendem Offset als Bezug nehmen, welche Stellen im Array auszulesen sind. mit Tabellenbereichen vergleichen, wüsste ich wirklich gerade gar nichts anzufangen bzw. verstehe ich nicht wie das möglich wäre.
Liebe Grüße
AW: Array Typen unverträglich
16.01.2019 15:36:20
PeterK
Hallo
Du kannst ja Deine beiden Arrays "just in time" erzeugen (und brauchst somit nichts "global" zu speichern). Nepumuk's Procedure läßt Du 2x laufen, einmal mit den Daten des aktuellen Blattes und einmal mit den Daten der Kopie. Somit hast Du 2 Arrays die dann vergelichen kannst.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige