Mittels Inputbox mehrere Werte gleichzeitig auswählen/abfragen?
Hallo, ich möchte wie hier z. B in Zelle 14 mehrere Zahlen zum auswerten aus einer Tabelle ansprechen. Habe das mit einer Zahl geschafft, aber ich müsste halt mehrere ansprechen / auswählen können. Kann mir da bitte jemand weiter helfen? Gruß
liO.AutoFilter.ShowAllData 'Erst mal alle Daten anzeigen dass nicht noch ein Filter was verfälscht
Gruppe = Application.InputBox(Title:="Auswahl der betroffenen Gymnastikgruppe", Prompt:="Geben Sie die Nummer der Sportgruppe ein:", _
Default:="Hier eingeben", Type:=1)
liO.Range.AutoFilter Field:=14, Criteria1:=Gruppe 'hier wird die 14. Spalte als Filter gesetzt
1 Antwort
Zeichne mal ein Makro auf, wo du auf einem WorkSheet die Autofilter Tabelle an mehreren Stellen auf bestimmte Werte setzt.
dann wirst du feststellen, dass man die Dinge (Criteria) als Array übergeben muss.
Dieses mit deinen Werten aus der InputBox vornehmen.
ABER in der inputbox lässt sich NUR ein String zurückgeben.
Du wirst also dem User vorgeben müssen, WIE die Dinge in die inputBox einzugeben sind. Hier kann so viel Unfug passieren, dass dein Code viel Fehlerbedienung zu machen hat.
Besser wäre es eine UserForm für diesen Zweck zu implementieren.
Alles soll also von Excel nach WORD kopiert werden ?
Dort soll dann die Tabelle perfekt auf's Blatt passen ?
Man kann "FitToPage" automatisieren. Sollte auch im Web ein Code Snip zu finden sein. ABER: Dies macht nicht zwingend die idealen Breiten für die Optik, die du ggf anstrebst. Es hat sich wohl auch der Fokus der Frage geändert ?
Es geht nicht mehr 'nur' um AutoFilter setzen.
==
Wie mache ich dies ?
Ich habe eine "perfekte" Word Vorlage als OLE Objekt im Excel liegen.
Per KnopfDruck werden die Daten im Excel vorbereitet. Dann das WORD template aus dem Excel heraus (OLE Objekt export) in ein Lokales Verzeichnis gespeichert (Meist parallel zum Excel File) dann die Excel Inhalte in das Template an die gewünschten Ecken eingefügt. Zuletzt noch die Datei umbenannt, ggf per eMail versandt, etc, etc.
Danke, ja ich will nach WORD kopieren und das Blatt optimal mit den Spalten aus EXCEL befüllen. Ich hatte 2 Ideen die ich aber gemäß den Hinweisen hier doch nicht verfolgen will. Anstelle dessen will ich die Jahre direkt ansprechen, ohne weitere Varianten also. Dazu füge ich einmal einen Code ein, womit ich versuche dies zu bewerkstelligen. Fehlerhinweis: Autofiltermethode konnte nicht ausgeführt werden. Danke für eure Hilfe, Wolly
Private Sub Jubiläen_Click() ' Auswahlliste für Jubiläen
'*********
'Abfrage für Jübiläen
'*********
'--------- Variablendeklaration ------------------
Dim wsh_Q As Worksheet, liO As ListObject 'das Quellworksheet und ein "Tabellenobjekt"
Dim obj_Wd As Object, obj_Doc As Object, pfadZurVorlage As String 'Die beiden Word-Objekte und die Pfadvariable
'-------------------------------------------------
pfadZurVorlage = "C:\Users\Besitzer\Desktop\Jubil für Excel.dotx"
' C:\Users\Besitzer\Desktop
' Z:\1##ForenFragen\Excel\zuWord\VorlagenDateiMitBookmark.dotx" 'der Pfad wo du die Vorlage hingelegt hast (anpassen)
'--------- Word-Objekte ins Leben rufen ----------
Set obj_Wd = CreateObject("WORD.Application") 'du kreierst die Word-Applikation
Set obj_Doc = obj_Wd.documents.Add(Template:=pfadZurVorlage) 'Du legst ein neues Word-Dokument aus deiner Vorlage an
obj_Doc.Windows(1).Visible = True 'Das Word-Doc soll sichtbar sein
'--------- Auswahl in Excel ausführen ------------
Set wsh_Q = ThisWorkbook.Worksheets("ArbTab") 'du weist der Variablen das Worksheet zu
Set liO = wsh_Q.ListObjects(1) 'Du weist das "intelligente Tabellenobjekt" seiner Variablen zu
liO.AutoFilter.ShowAllData 'Erst mal alle Daten anzeigen dass nicht noch ein Filter was verfälscht
'******** Hier wird die Tabelle angesprochen!
ActiveSheet.Range("$A$1:$AH$300").AutoFilter Field:=31, Criteria1:=Array("1", _
"70", "75", "80", "85", "90", "95", "100"), Operator:=xlFilterValues
With liO.Range
USW.
Warum das künstliche ListObjekt ?
Du hast doch alle Daten in Excel.
Also den vorhandenen Autofilter fernsteuern.
Zunächst Filterung aufheben:
Public Function fnDeActivateAutoFilter(ByVal cWB As String, ByVal cSheet As String)
If Workbooks(cWB).Worksheets(cSheet).AutoFilterMode = True Then
If Workbooks(cWB).Worksheets(cSheet).FilterMode = True Then
Workbooks(cWB).Worksheets(cSheet).ShowAllData
Else
'ggf den Autofilter, der noch gar nicht aktiv geschaltet ist, über die gewünschten Spalten aktivieren.
End If
End If
End Function
dann die Filterung setzen, analog zu dem virtuellen den du im Code Snip zeigst.
Dann den Gefilterten Bereich per Copy Paste in WORD fallen lassen.
Danke, aber das in meinen vorhandenen Text einzubauen ist mangels Kenntnis meinerseits von mir nicht möglich. Ich vermute das ich deinen Code dem Tabellenblatt zuordnen muss, aber da ist schon so einiges hinterlegt. Nochmals vielen Dank. ich fürchte ich muss meine Idee begraben. Gruß Wolly
Gut, als Beispiel ein Code den ich nützen könnte wo ich den Spalteninhalt mit einer länge vorgegeben habe (Versuch). Passt aber noch nicht in den vorhandenen Code. Wenn jemand das mit der Spaltenbreite einfügen zeigen könnte würde mir das sehr weiter helfen. Danke