excel - 如何简化这个庞大的 VBA If/Then 语句

标签 excel vba simplify

所以我是 vba 的菜鸟,这是我第 8 天使用任何类型的编码,所以我对我在这段代码中使用的“蛮力”方法感到抱歉,我知道它效率不高,必须有更好的方法来做这个。所以这正是我要问的,我怎样才能简化这段代码?它运行良好,可以做它需要做的事情,但它体积庞大,速度很慢。

'RefDate1=cell K36

Dim RefDate1 As Date

RefDate1 = Sheets("Monthly Status").Range("K36")
If RefDate1 = False Then
Sheets("Monthly Status").Range("K34").ClearContents
Sheets("Monthly Status").Range("K33").ClearContents
Sheets("Monthly Status").Range("K32").ClearContents
Sheets("Monthly Status").Range("K31").ClearContents
Sheets("Monthly Status").Range("K30").ClearContents
Sheets("Monthly Status").Range("K29").ClearContents
Sheets("Monthly Status").Range("K28").ClearContents
Sheets("Monthly Status").Range("K27").ClearContents
Sheets("Monthly Status").Range("K26").ClearContents
Sheets("Monthly Status").Range("K25").ClearContents
Sheets("Monthly Status").Range("K24").ClearContents
Else
Sheets("Monthly Status").Range("K34").Value = (RefDate1 - (7 * 6))
Sheets("Monthly Status").Range("K33").Value = (RefDate1 - (7 * 8))
Sheets("Monthly Status").Range("K32").Value = (RefDate1 - (7 * 9))
Sheets("Monthly Status").Range("K31").Value = (RefDate1 - (7 * 11))
Sheets("Monthly Status").Range("K30").Value = (RefDate1 - (7 * 12))
Sheets("Monthly Status").Range("K29").Value = (RefDate1 - (7 * 19))
Sheets("Monthly Status").Range("K28").Value = (RefDate1 - (7 * 20))
Sheets("Monthly Status").Range("K27").Value = (RefDate1 - (7 * 22))
Sheets("Monthly Status").Range("K26").Value = (RefDate1 - (7 * 23))
Sheets("Monthly Status").Range("K25").Value = (RefDate1 - (7 * 26))
Sheets("Monthly Status").Range("K24").Value = (RefDate1 - (7 * 26))
End If

最佳答案

工作表变量将在此处继续使用....一旦声明,交换 Sheets("Monthly Status") 的每个实例带有变量名 (ws)

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Monthly Status")    

If Not RefDate1 Then
    ws.Range("K24:K34").ClearContents
Else
    ws.Range("K24:K25") = RefDate1 - (7 * 26)
    ws.Range("K26") = RefDate1 - (7 * 23)
    'and so on......
End If

关于excel - 如何简化这个庞大的 VBA If/Then 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54240208/

相关文章:

vba - 根据数据条目的单元格值取消隐藏行 - 刷新错误

excel - 如何强制忽略/继续 1004 错误?

ms-access - 为什么我不能直接使用 CurrentDB() 方法用 vba 重新链接表?

math - 将 Sympy 表达式简化为变量的隐式函数

java - 简化值的静态映射

php - 如何简化此数据库更新查询 (php)

excel - VBA Excel - 函数卡住

sql - 想要使用ssis将excel文件数据插入表中 - 格式问题

excel - vba-sum 和 group by 不使用 sql-adodb

excel - 打开时关闭 Excel 电子表格的更新链接消息