VBA .font.bold优化

时间:2015-06-30 14:52:30

标签: excel vba excel-vba

我使用相同的宏格式化两个不同的报告。两个电子表格之间的性能截然不同。宏在第一个报告上即时运行,另一个需要大约10秒钟。我把它缩小到使单元格A1变粗的语句。省略粗体语句时,两个电子表格都会立即执行宏。我尝试了以下格式化单元格A1的方法。

  1. Range("A1").Font.Bold = True
    
  2. Range("A1:A1").Font.Bold = True
    
  3. With Range("A1")
        .Font.Bold = True
    End With
    
  4. ActiveSheet.Cells(1, 1).Font.Bold = True
    
  5. 据我所知,.Font.Bold = True是使单元格变粗的唯一方法,因此使用其他命令无法避免问题。以上是Google建议调用此类操作的所有方式。两个电子表格都是.xls扩展名。为什么在执行相同的语句时,一个电子表格的性能会有很大的不同?

1 个答案:

答案 0 :(得分:0)

可能有很多原因。我认为更改需要ScreenUpdating,并且两个工作表都使用不同的内存来计算您的工作表布局,例如有形状,枢轴,图表,隐藏的行等。

要解决此问题,请在计算之前关闭Application.ScreenUpdating = False 'Your code here Application.ScreenUpdating = True 。然后再打开它,如下所示

AutomaticCalculations

此外,为了优化您的代码,请使用以下内容:

  1. 关闭.xslb
  2. 将文件另存为二进制Excel:$(function () { var consoleSelect = $('.console-select'), gameConsoleOptions = $('.console-select option'); $(".game-select").on("change", function () { var selectedGame = $(this).find("option:selected").data('game'), games = [], selectedCategory = $(this).find("option:selected").closest('optgroup').attr('label'); if (selectedGame) { games = $.makeArray($(this).find('option[data-game="' + selectedGame + '"]').map(function () { return $(this).closest('optgroup').attr('label'); })); } if (games.length) { gameConsoleOptions.hide(); gameConsoleOptions.filter(function (i, v) { return games.indexOf($(v).text()) != -1; }).show(); consoleSelect.find('option:contains('+selectedCategory+')').prop('selected', 'selected'); } else { gameConsoleOptions.show(); } }); });