vba - 将范围乘以当月剩余天数的百分比
问题描述
我在编写这段代码的最后一部分时遇到了麻烦。
我试图让 excel 根据今天计算当月剩余天数的百分比。然后它将一系列单元格乘以该值。
当它实际相乘时,所有单元格都变为“#NAME”。我检查了 msgbox,它的计算部分运行正确(它找到了正确的百分比),但是当插入最后一个公式进行乘法时,它不起作用。
当我从公式中取出变量并输入实际数字时,它工作正常。我认为我将变量写入最终序列的方式有问题。我的格式有什么问题?
Sub MultiplyDayRatio()
Dim rngData As Range
Dim MyDate As Date
Dim DaysLeft As Integer
Dim DaysInMonth As Integer
Dim PercentLeft As Double
MyDate = Date
'DaysInMonth = EoMonth(Today(), 0)
DaysLeft = WorksheetFunction.EoMonth(Date, 0) - Date
'MsgBox DaysLeft
DaysInMonth = (MonthDays(Month(MyDate)))
'MsgBox DaysInMonth
PercentLeft = DaysLeft / DaysInMonth
'MsgBox PercentLeft
Set rngData = ThisWorkbook.Worksheets("Ingredient_Forecast_Summary").Range("G3:G70")
rngData = Evaluate(rngData.Address & "*PercentLeft.value")
End Sub
解决方案
洛佩里。试试这个:
Sub MultiplyDayRatio()
Dim rngData As Range, C As Range '<-- new variable
Dim MyDate As Date
Dim DaysLeft As Integer
Dim DaysInMonth As Integer
Dim PercentLeft As Double
MyDate = Date
'DaysInMonth = EoMonth(Today(), 0)
DaysLeft = WorksheetFunction.EoMonth(Date, 0) - Date
'MsgBox DaysLeft
DaysInMonth = (MonthDays(Month(MyDate)))
'MsgBox DaysInMonth
PercentLeft = DaysLeft / DaysInMonth
'MsgBox PercentLeft
Set rngData = ThisWorkbook.Worksheets("Ingredient_Forecast_Summary").Range("G3:G70")
'rngData = Evaluate(rngData.Address & "*PercentLeft.value") 'instead this
'Try this
For Each C In rngData
C = C * PercentLeft
Next C
End Sub
推荐阅读
- html - Bootstrap: Make column size always 12 on small device but default behaviour on other devices
- javascript - 在混合 Cordova/Android 应用程序的类中调用另一个 JavaScript 方法
- uwp - 无法激活 Windows 应用商店应用并出现错误应用未在要求的时间内启动
- javascript - 如何在 React 中动态生成导入文件的路径
- python - 使用LM393声音传感器检测声音频率
- vue.js - 如何在 vue create 中选择 npm 而不是 yarn
- javascript - 如何以角度获取所有工作日日期
- php - 通过键比较多维数组值,其中子数组在php中可以为空或不同
- javascript - 如何进行两次 api 调用,接收 json,然后将此数据存储在结构略有不同的本地 json 文件中?(JavaScript)
- python - 如何将图像及其对应值(.csv)输入到 python 中的回归模型?