Thema Datum  Von Nutzer Rating
Antwort
29.09.2016 13:49:50 Michel
NotSolved
29.09.2016 14:49:43 Werner
NotSolved
29.09.2016 14:56:41 Werner
NotSolved
30.09.2016 10:19:53 Michel
NotSolved
30.09.2016 10:55:15 Werner
NotSolved
30.09.2016 13:34:51 Gast29525
NotSolved
04.10.2016 11:11:18 Michel
NotSolved
04.10.2016 13:05:49 Werner
NotSolved
05.10.2016 13:23:43 Gast36371
NotSolved
Blau Hatte noch was vergessen
05.10.2016 13:50:19 Gast6391
NotSolved

Ansicht des Beitrags:
Von:
Gast6391
Datum:
05.10.2016 13:50:19
Views:
722
Rating: Antwort:
  Ja
Thema:
Hatte noch was vergessen

Hallo,

 

habe jetzt gerade mal doch den vergleich selbst gemacht, also Formel von hand als Arrayformel definiert, und dann im Code diese mit deinem strPfad verglichen.

Also du musst die Formel in englisch eingeben, und zwar "Komplett".

Das heist nicht nur die Formel-Namen in Englisch, also Vergleich->match, sondern auch die Semikolon durch Kommas erstzten.

 

"=INDEX('C:\tmp\[mappe1.xlsm]Tabelle1'!$G$11:$MZ$1469,MATCH($F$4&$D9,'C:\tmp\[mappe1.xlsm]Tabelle1'!$G$11:$G$1469&'C:\tmp\[mappe1.xlsm]Tabelle1'!$H$11:$H$1469,0),E$6)"

Ich habe deine Formel im Code mal bis auf eine Stelle korrigiert und die Schleife drin gelassen, die mir dein String und die von Hand eingebgebene Formel vergleicht.

Die Schleife spukt dir sämtliche Stellen aus wo sich die Formeln unterscheien.

Wenn du den letzten Fehler korrigierst, sollte es gehen...

 

Sub Pfadhinzufügen_Click()
'Ändert/Fügt Dateipfad hinzu
     
    Dim LoSpalte As Long
    Dim LoZeile As Long
    Dim vardatei As Variant
    Dim varPfad1 As Variant
    Dim strNameSchichtprotokoll As String
    Dim strPfad As Variant
    Dim strMatrix As String
    Dim strZeile As String
    Dim strSpalte As String
 
    LoZeile = 9       '9
    LoSpalte = 5      'E
     
   'Dateipfad vom Benutzer abfragen
    vardatei = Application.GetOpenFilename("Alle Dateien,*.*", 1, "Auswahl digitales Schichtprotokoll")
     
    'Pfad anpassen
    varPfad1 = Left(vardatei, InStrRev(vardatei, "\"))                                          'Speichert den Dateipfad (ohne Dateinahmen)
    varPfad1 = Replace(varPfad1, "H:", "\\hv\fs")                                               'ersetzt "H:" im Dateipfad durch "\\hv\fs"
    strNameSchichtprotokoll = Mid(vardatei, InStrRev(vardatei, "\") + 1)                        'Speichert den Dateinamen (ohne zugehörigen Dateipfad)
    strPfad = "'" + varPfad1 + "[" + strNameSchichtprotokoll + "]Tabelle1'!"            'setzt Pfad und Dateiname so wieder zusammen, dass direkt auf das Blatt "Schichtprotokoll zugegriffen wird"
    strMatrix = "=INDEX(" + strPfad + "$G$11:$MZ$1469,"                                         'INDEX-Funktion (Matrix, Zeile, Spalte) mit Wert für Matrix
    strZeile = "MATCH($F$4&$D9;" + strPfad + "$G$11:$G$1469&" + strPfad + "$H$11:$H$1469,0)," 'Wert für Zeile
    strSpalte = "E$6)"                                                                          'Wert für Spalte
    strPfad = strMatrix + strZeile + strSpalte                                                  'die obigen 3 Zeilen zusammengesetzt zur Komplettfunktion
 
    If vardatei = False Then
        MsgBox "Hinzufügen wurde unterbrochen!", vbInformation, p_cstrAppName                    'MsgBox: Fehlermeldung bei Unterbechung
    Else
        For i = 1 To Len(strPfad)
' Schleife um Fehler zu finden
            If Mid(strPfad, i, 1) <> Mid(Sheets(1).Cells(LoZeile, LoSpalte).FormulaArray, i, 1) Then
                MsgBox i & vbCr & Left(strPfad, i) & vbCr & Left(Sheets(1).Cells(LoZeile, LoSpalte).FormulaArray, i)
                Stop
            End If
        
        Next i
        Sheets(1).Cells(LoZeile, LoSpalte).FormulaArray = strPfad 'Funktioniert. Gibt aber #WERT zurück.
        End If
End Sub

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.09.2016 13:49:50 Michel
NotSolved
29.09.2016 14:49:43 Werner
NotSolved
29.09.2016 14:56:41 Werner
NotSolved
30.09.2016 10:19:53 Michel
NotSolved
30.09.2016 10:55:15 Werner
NotSolved
30.09.2016 13:34:51 Gast29525
NotSolved
04.10.2016 11:11:18 Michel
NotSolved
04.10.2016 13:05:49 Werner
NotSolved
05.10.2016 13:23:43 Gast36371
NotSolved
Blau Hatte noch was vergessen
05.10.2016 13:50:19 Gast6391
NotSolved