Zwei ONLYOFFICE-Makros: Hervorheben von Duplikaten und Auswählen von leerer Zeile
Unsere Benutzer fragten uns, wie man VBA-Makros aus Excel wieder erstellen kann. In diesem Beitrag erklären wir es an zwei einfachen Beispielen.
ONLYOFFICE-Makros sind in JavaScript-Sprache und mit ONLYOFFICE Document Builder API-Skript geschrieben. Anders gesagt, Sie sollen VBA-Makros mit JavaScript neu erstellen, um diese zu nutzen.
Wieso schreiben wir unsere Makros in JavaScript?
- Es ist betriebssystemübergreifend;
- Es ist wirklich einfach;
- Sie können Ihren Code als Makro oder als Plugin verwenden.
Außerdem haben unsere Makros keinen Zugriff auf das System – das garantiert höheres Sicherheitsniveau. Sie stellen bloß JS-Code dar und dieser wird in demselben Fenster mit den Editoren ausgeführt.
- In Tabellenkalkulationen öffnen Sie die Registerkarte Plugins und klicken Sie auf Makros.
- Klicken Sie auf “Neu” im geöffneten Fenster.
- Lesen Sie die API-Dokumentation, um das Skript zu schreiben.
Schreiben wir ein Makro zum Hervorheben von Duplikaten im ausgewählten Bereich mit verschiedenen Farben, um wiederholende Werte schnell zu erkennen. Wir verwenden dieses einfache VBA-Makro als Basis.
Hier ist das Skript mit Kommentaren, sodass Sie den Erstellungsprozess verstehen. Die Farben werden im Code des Makros bestimmt.
(function () {
// Background color of cells with non-repeating values
var whiteFill = Api.CreateColorFromRGB(255, 255, 255);
// The current index of the color range
var uniqueColorIndex = 0;
// Color range to highlight duplicate values
var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
Api.CreateColorFromRGB(204, 204, 255),
Api.CreateColorFromRGB(0, 255, 0),
Api.CreateColorFromRGB(0, 128, 128),
Api.CreateColorFromRGB(192, 192, 192),
Api.CreateColorFromRGB(255, 204, 0)];
// Function to get color for duplicates
function getColor() {
// If you have chosen all the unique colors, then let's go from the beginning
if (uniqueColorIndex === uniqueColors.length) {
uniqueColorIndex = 0;
}
return uniqueColors[uniqueColorIndex++];
}
// Getting an active sheet
var activeSheet = Api.ActiveSheet;
// Getting selection on the active sheet
var selection = activeSheet.Selection;
// Map of values in cells with the duplicates number
var mapValues = {};
// All cells range
var arrRanges = [];
// Going through the selection
selection.ForEach(function (range) {
// Getting value from cell
var value = range.GetValue();
if (!mapValues.hasOwnProperty(value)) {
mapValues[value] = 0;
}
mapValues[value] += 1;
arrRanges.push(range);
});
var value;
var mapColors = {};
// We go through all the cells of the selection and setting the highlighting if this value is repeated more than 1 time
for (var i = 0; i < arrRanges.length; ++i) {
value = arrRanges[i].GetValue();
if (mapValues[value] > 1) {
if (!mapColors.hasOwnProperty(value)) {
mapColors[value] = getColor();
}
arrRanges[i].SetFillColor(mapColors[value]);
} else {
arrRanges[i].SetFillColor(whiteFill);
}
}
})();
Mit diesem Makro erhalten wir das Folgende:
Dieses Makro findet die nächste verfügbare leere Zeile in einem Arbeitsblatt. Wir haben dieses VBA-Makro als Beispiel genommen und dieses Skript erstellt:
(function()
{
// Getting the active sheet
var activeSheet = Api.ActiveSheet;
// Minimum row index
var indexRowMin = 0;
// Maximum row index
var indexRowMax = 1048576;
// Column 'A'
var indexCol = 0;
// Row index for empty cell search
var indexRow = indexRowMax;
for (; indexRow >= indexRowMin; --indexRow) {
// Getting the cell
var range = activeSheet.GetRangeByNumber(indexRow, indexCol);
// Checking the value
if (range.GetValue() && indexRow !== indexRowMax) {
range = activeSheet.GetRangeByNumber(indexRow + 1, indexCol);
range.Select();
break;
}
}
})();
Mit diesem Code können Sie die nächste leere Zeile auswählen. In einer der nächsten Versionen wird auch Scrollen verfügbar.
Wenn Sie Hilfe beim Schreiben eines Makros benötigen oder die notwendige Methode in unserer API nicht erhältlich ist, melden Sie das Problem auf GitHub.
ONLYOFFICE auf GitHub
Artikel über die Erstellung von Plugins. Jetzt lesen>>
Beispiel eines Plugins: Füllen Sie die Zellen mit Farbe und lassen Sie Ihr Arbeitsblatt einem Bild werden. Probieren Sie es aus>>