【问题标题】:Convert VBA to Java Google Script [duplicate]将 VBA 转换为 Java Google 脚本 [重复]
【发布时间】:2018-11-18 13:34:41
【问题描述】:

拥有以下 VBA,我需要将其插入到 Google 表格中,

有人可以帮忙转换吗?

Sub Activate_Sheet()
    Sheets(Sheets("Main").Range("A1").Value).Activate
End Sub

谢谢,

【问题讨论】:

  • 您可能希望添加 Google Apps 脚本标签并显示您进行的研究。我们在这里帮助您解决您编写的代码时遇到的问题。有帮助资源来指导发布。 TourHow to Askminimal reproducible example
  • 我认为它的要点是:var spread = SpreadsheetApp.getActiveSpreadsheet();,然后是var sheetName = spread.getSheetByName('Main').getRange('A1').getValue();,然后是spread.setActiveSheet(sheetName);。但未经测试。
  • /** @OnlyCurrentDoc */ function UntitledMacro() { var spreadsheet = SpreadsheetApp.getActive();电子表格.getRange('H12').activate(); }; SpreadsheetApp.getActiveSpreadsheet() var sheetName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Main').getRange('A1').getValue(); SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);当我尝试运行它时,它说参考错误 A1 未定义此脚本的目的是当我在 A1 中输入一个工作表编号并按下分配给此脚本的按钮时,它将直接将我带到请求的工作表。
  • 我拥有的文件包含 300 张纸,就像一个文件系统我需要的是能够插入一张纸的编号,只需按一个按钮并自动重定向到它
  • Edit 你的问题包括这里所有的 cmets。

标签: javascript vba google-apps-script


【解决方案1】:

此脚本获取 sheet()[0] 中单元格 A1 中的值,然后移动到该表号。

function so_53361440() {
  // set up spreadsheet
    var ss = SpreadsheetApp.getActiveSpreadsheet();

    // set sheet 0 as the active sheet
  var sheet = ss.getSheets()[0];

    // get the value in cell A1
  var cell = sheet.getRange("A1").getValue();
  // Logger.log("value of cell = "+cell);// DEBUG

    // Convert number to string
  var sheetname = ""+ cell;
  // Logger.log("sheetname = "+sheetname);// DEBUG

    // set sheet by name and move to new sheet
    var mysheet = ss.getSheetByName(sheetname);
    ss.setActiveSheet(mysheet);
}

主题的变化
有 300 张纸,回到 sheet()[0] 会令人沮丧。因此,这个小变化旨在创建一个自定义菜单,该菜单将在输入框中请求工作表编号。其余代码相同

function so_53361440_01() {
    // setup ui
  var ui = SpreadsheetApp.getUi(); 

  var result = ui.prompt(
      'What sheet do you want?',
      'Please enter a number:',
      ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();
  var text = result.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    //ui.alert('Sheet is ' + text + '.');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('Operation Cancelled.');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('Input Box closed - no action taken.');
  }

    // set up spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

    // assign the UI value to a variable
  var cell = text;
  // Logger.log("value of cell = "+cell);//DEBUG

    // convert the variable to a string
  var sheetname = ""+ cell;
  // Logger.log("sheetname = "+sheetname);// DEBUG

    // set the sheetname to the variable and goto that sheet
    var mysheet = ss.getSheetByName(sheetname);
    ss.setActiveSheet(mysheet);

}

function onOpen() {
 SpreadsheetApp.getUi() 
      .createMenu('Change Sheet')
      .addItem('Pick a sheet', 'so_53361440_01')
      .addToUi();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多