Új hozzászólás Aktív témák

  • Mutt

    senior tag

    Másik fórumon a felhasználó kapott egy Excel VBA kódot, ami asztali környezetben jól működik, de online felületen már nem. A probléma azon túl, hogy a VBA nem fog online futni, hogy a felhasználó MS Excel helyett Google Spreadsheet-et használ, aminek más a makró nyelve.

    A feladat az, hogy automatikusan kell azokat az oszlopokat eltüntetni, ahol az oszlop második sorában található dátum már elmúlt. A feladat annyival bonyolultabb, hogy egyes cellák össze vannak vonva, így nem csak egy oszlopot, hanem egyszerre kettőt kell elrejteni.

    A problémához ez a makró használható:

    //onOpen esemény gondoskodik arról, hogy a munkafüzet megnyitásakor adott parancs lefusson
    function onOpen() {

    var spreadsheet = SpreadsheetApp.getActiveSheet();

    //a makró csak az adott nevű munkalap megnyitásakor fog lefutni
    if (spreadsheet.getSheetName() == "Munkalap1") {
    autohide();
    }
    };

    //ez a makró fogja az adott oszlopokat elrejteni
    function autohide() {
    var spreadsheet = SpreadsheetApp.getActiveSheet();

    //aktuális idő változóba mentése
    var currentdate = new Date();

    //az aktív munkalap második sorából az adatok változóba mentése
    var ranges = spreadsheet.getRange("2:2");
    var values = ranges.getValues();

    //a második sorban lévő adatokon egyesével végigmegyünk
    //ha a dátum régebbi mint az aktuális és az oszlop még nincs elrejtve, akkor elrejtjük az oszlopot és a mellete lévőt is
    for (var i = 0; i < ranges.getNumColumns(); i++) {
    if (values[0][i] < currentdate & values[0][i].toString().length > 0 & !spreadsheet.isColumnHiddenByUser(i+1)) {
    spreadsheet.hideColumns(i+1, 2);
    }
    }
    };

    üdv

Új hozzászólás Aktív témák