Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ JavaScript _ Problem z resetowaniem komórek

Napisany przez: TaZZo 19.11.2019, 22:57:47

Witam,

Gdzieś znalazłem skrypt na resetowanie komórek w Exelu i resetuje bardzo dobrze. Dokładniej skrypt podstawia w komórkę wartość 0. Mam z nim problem bo nie znam się na Javascript, i czasami zamiast wartości zero to w całej kolumnie z "0" zmienia na wartość "1". Dlaczego tak się dzieje?

Kod
function modifyCell(cellName) {
  var range = SpreadsheetApp.getActiveSheet().getRange(cellName);
  var toAdd = 0;

  range.setValue(range.getValue() + toAdd);

}

function increaseLine2() {
  modifyCell("B5:B9");
  modifyCell("B11:B22");
  modifyCell("B24:B35");
  modifyCell("B37:B44");
  modifyCell("B46:B50");
  modifyCell("B52:B57");
  modifyCell("B59:B72");
  modifyCell("C5:C9");
  modifyCell("C11:C22");
  modifyCell("C24:C35");
  modifyCell("C37:C44");
  modifyCell("C46:C50");
  modifyCell("C52:C57");
  modifyCell("C59:C72");


}

Napisany przez: trueblue 20.11.2019, 09:10:32

To nie jest JavaScript, lecz Visual Basic.
Funkcja nie służy resetowaniu wartości, ale modyfikacji, ale właściwie nie robi nic, bo do wartości komórki dodaje 0.

Jeśli chcesz zbudować sobie taki skrypt, to nagraj makro i przeanalizuj jego kod.

Napisany przez: TaZZo 20.11.2019, 14:16:36

Chodzi mi o zmodyfikowanie tego skryptu tak aby nie zmieniał na wartość "1". Bo czasami po naciśnięciu przycisku RESET zamiast "0" podstawia "1" i nie wiem czym jest to związane.

Napisany przez: trueblue 20.11.2019, 14:23:06

Dlatego sugerowałem abyś nagrał makro. Zobaczyłbyś jak wygląda wtedy kod kiedy wstawiasz w komórkę wartość "0".
Pewnie nie masz ochoty tego zrobić, to zastanów się do czego służy metoda setValue i co powinieneś w niej zmienić.

Napisany przez: TaZZo 20.11.2019, 14:38:56

Nagrałem to makro i wyszło że podstawia "1" zamiast "0". To co do tej pory mówiłem.

Kod
function Makrobeznazwy() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B5').activate();
  spreadsheet.getCurrentCell().setValue('1');
  spreadsheet.getRange('C6').activate();
  spreadsheet.getCurrentCell().setValue('1');
  spreadsheet.getRange('B7').activate();
  spreadsheet.getCurrentCell().setValue('1');
  spreadsheet.getRange('C8').activate();
  spreadsheet.getCurrentCell().setValue('1');
  increaseLine2();
};

Napisany przez: trueblue 20.11.2019, 14:40:37

Wstawiaj ręcznie "0" podczas nagrywania.

Zresztą już powinieneś zauważyć co masz zmienić w kodzie z pierwszego postu.

Napisany przez: TaZZo 20.11.2019, 14:42:11

Już znalazłem, dzięki WIELKIE. smile.gif

Haczyki za pomoc poszły.


Temat do ZAMKNIĘCIA. Dziękuje

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)