Thema Datum  Von Nutzer Rating
Antwort
Rot Arraywert länge Einschneiden
12.03.2020 15:32:44 BK
NotSolved
13.03.2020 22:44:17 Werner
*****
Solved
13.03.2020 22:47:37 Werner
*****
Solved

Ansicht des Beitrags:
Von:
BK
Datum:
12.03.2020 15:32:44
Views:
1182
Rating: Antwort:
  Ja
Thema:
Arraywert länge Einschneiden

Guten Tag,

 

ich habe ein Makro in Excel/VBA geschrieben, dass in einer Spalte alle Werte ausliest und in einem Array schreibt. Dann filtert es nach jedem Wert des Arrays in dieser Spalte und erstellt eine neues Tabellenblatt mit den Namen dieses Arraywertes.

Jetzt habe ich das Problem das diese Werte oft länger sind als 31 Zeichen. Wie kann ich hier den Befehl anpassen das er maximal die ersten 31 Zeichen nimmt, um die Tabelle zu bennen? Der Arraywert im Code ist vntItem. Ich brauche quasi die VBA syntax was im Excel =LINKS(30;vntItem) wäre.

Der Ausschnitt des Codes:

Die Zeile die meines erachtens angepasst werden muss habe ich hervorgehoben.

With ActiveSheet
  If .FilterMode Then .ShowAllData 'deaktiviert bereits aktive Filter
  vntFilter = .Range("K14:K" & Application.Max(2, .Cells(.Rows.Count, 3).End(xlUp).Row)) 'liest alle Werte aus K aus.
  vntFilter = toArraySorted(vntFilter) 'speichert alle Werte aus K in einem Array AUCH LEER!
  
  
  For Each vntItem In vntFilter 'geht jedes Filteritem durch
    .Range("K13").CurrentRegion.AutoFilter Field:=11, Criteria1:=vntItem, Operator:=xlAnd
    Application.CalculateFull
    Set addworksheet = ThisWorkbook.Worksheets.Add
    
    If vntItem = "" Then
        addworksheet.Name = "Leer"
        Else:
        addworksheet.Name = vntItem
    End If
     
   
    Sheets("Mail Generator").Select
    
    If vntItem = "" Then
            ActiveSheet.AutoFilter.Range.Copy Sheets("Leer").Range("A13")
            Worksheets("Mail Generator").Range("A1:L12").Copy Worksheets("Leer").Range("A1")
            Sheets("Leer").Range("F3").Value = vntItem
        Else:
            ActiveSheet.AutoFilter.Range.Copy Sheets(vntItem).Range("A13")
            Worksheets("Mail Generator").Range("A1:L12").Copy Worksheets(vntItem).Range("A1")
            Sheets(vntItem).Range("F3").Value = vntItem
    End If

    
  Next
End With

Ich hoffe ich habe es gut beschrieben. Vielen Dank im Voraus.


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
Rot Arraywert länge Einschneiden
12.03.2020 15:32:44 BK
NotSolved
13.03.2020 22:44:17 Werner
*****
Solved
13.03.2020 22:47:37 Werner
*****
Solved