需要帮助理解Application.Evaluate

时间:2018-01-12 05:38:15

标签: excel vba excel-vba

我是Excel VBA新手,我只是想了解下面的代码。

我主要是在努力理解评估功能,即使我已经在线阅读了它。

如果可能的话,如果有人能用简单的英语翻译代码,我将不胜感激,但当然欢迎任何帮助! :)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) { this.inc(state) },
    decrement(state) { this.dec(state) }
  }
})

// Shared functions: inc() and dec()
store.inc = state => state.count++
store.dec = state => state.count--

new Vue({
  el: '#app',
  computed: {
    count() {
      return store.state.count
    }
  },
  methods: {
    increment () {
      store.commit('increment')
    },
    decrement () {
      store.commit('decrement')
    }
  }
})

1 个答案:

答案 0 :(得分:3)

要了解Application.Evaluate的作用,您需要了解Application指的是Excel本身,因此Evaluate基本上归结为一种利用Excel表达式的方式评估引擎。

Debug.Print Application.Evaluate("SUM(2, 2)") ' prints 4

有一个简写符号:

Debug.Print [SUM(2, 2)] ' also prints 4

虽然它很慢,但如果可以,请避免使用它。 Excel有一个丰富的对象模型,其中包含Application.WorksheetFunction之类的内容,它允许您以编程方式调用MAXVLOOKUP等工作表函数以及您可能想要评估的几乎所有内容

Evaluate不只是计算工作表函数 - 它会解析您在Excel的公式栏中输入的表达式。例如:

Debug.Print Application.Evaluate("=A1")
Debug.Print [A1]

两者都打印单元格A1的内容。有趣的是,它返回了您可以在VBA代码中使用的类型,而不仅仅是值:

Debug.Print TypeName([A1]) ' prints "Range"

请注意,as Tim Williams correctly notedApplication.Evaluate始终可以处理当前处于活动状态的工作表(并且对ActiveSheet的隐式引用是一个非常常见的错误来源!);如果您需要Evaluate某些内容,最好使用Worksheet个对象,例如Sheet1.Evaluate - 无论哪张表处于活动状态,都会返回预期结果。

至于你的代码做了什么,这有点超出了这个网站的范围。