Office Skript: Range aus Tabellenobjekt für Datenvalidierung
15.08.2025 17:56:13
Martin
Ich weiß nicht ob ich hier bei euch richtig bin weil die meisten Beiträge mit VBA zu tun haben und nicht mit Office Skript trotzdem wäre ich für Hilfe wirklich sehr dankbar.
VBA kann ich hier wegen den Sicherheitseinstellungen nicht verwenden.
Ich würde gern in Office Skript die Source der .dataValidation flexibel gestalten. Da sich die Anzahl der Zeilen und Spalten und auch die Position der Quelltabelle auf dem Tabellenblatt immer wieder ändern. Also ich brauch die Bereichsangabe der Spalte "Auswahl_Buchungsart" aus der Tabelle "tlb_Buchungsart". (Ich meine eine von den Intelligenten Tabellen ".listobjekt()" und in OS heißt es dann ".Table()" )
Das ist der Code ausschnitt um den es geht:
function main(workbook: ExcelScript.Workbook) {
// Aktives Arbeitsblatt abrufen
const selectedSheet = workbook.getWorksheet("Materialliste");
const tlb_Material = workbook.getTable("tlb_Material")
const tlb_Buchungsart = workbook.getTable("tlb_Buchungsart")
// Datendropdown für Spalte Buhungsart erstellen
dataValidation = tlb_Material.getColumn("Buchungsart").getRangeBetweenHeaderAndTotal().getDataValidation();
dataValidation.clear();
dataValidation.setIgnoreBlanks(true);
dataValidation.setPrompt({showPrompt: true, title: "", message: ""});
dataValidation.setErrorAlert({showAlert: true, title: "", message: "Eingabe nur über Ausfahlfeld möglich.", style: ExcelScript.DataValidationAlertStyle.stop});
dataValidation.setRule({ list: { inCellDropDown: true, source: "=Produkte!$K$2:$K10"}});
}
Die einzige möglichkeit die ich bis jetzt hinbekommen hab ist:
console.log("=" + tlb_Buchungsart.getColumn("Auswahl_Buchungsart").getRangeBetweenHeaderAndTotal().getAddress())
es erzeugt in der Konsole den String: =Produkte!K2:K10
Trag ich es jedoch bei der datenvalidierun als quelle
dataValidation.setRule({ list: { inCellDropDown: true, source: "=" + {tlb_Buchungsart.getColumn("Auswahl_Buchungsart").getRangeBetweenHeaderAndTotal().getAddress()} }});
Kommt mir ein Fehler.
Weis jemand einen effizienten weg wie ich an die Rang Koordinaten komme um sie direkt einzutragen. Das ganze scrippt erstellt recht viele Datenvalidierung, mit verschiedenen Quellen aus verschiedenen Spalten aus verschiedenen Tabellenblättern. Deswegen wäre es gut die Source der Datenvalidierungen direkt anhand des Tabellennamens und spalten namens einzutragen, sonst verliere ich den Überblick. Office Skript ist etwas mühsam ;)
Bin für jeden Vorschlag dankbar.
Grüße Martin
Anzeige