我在excel ss中有一个动态定义的命名范围,它根据开始日期和结束日期从表中获取数据
=OFFSET(Time!$A$1,IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),1,MATCH(Date_Range_End,AllDates)-IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),4)
Run Code Online (Sandbox Code Playgroud)
但是如果日期范围在表中没有数据,则范围不存在(或者某些东西,idk).如何在VBA中编写代码以测试此范围是否存在?
我尝试过类似的东西
If Not Range("DateRangeData") Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
但我得到"运行时错误1004,对象'_Global'的方法'范围'失败了."
问题是:在这个函数结束时,"tasks [taskCount]"元素的成员,如名称,截止日期等,确实是传递给这个函数的,但是在返回到这个函数的调用者之后,所有这些值变为垃圾,但taskcount除外,它不是动态的.此函数在类"Tasklist"的范围内定义
void addTask(char name[],char course[],char dueDate[]){
taskCount++;
Task task(taskCount, name, course, dueDate);
tasks[taskCount] = task;
}
Run Code Online (Sandbox Code Playgroud)
以下是"任务"类的简要定义:
class Task
{
private:
int number;
char* name;
char* dueDate;
char* course;
public:
Task(){
name = new char[TEXT_SIZE + 1];
dueDate = new char[TEXT_SIZE + 1];
course = new char[TEXT_SIZE + 1];
saveText = new char[(TEXT_SIZE * 3) + 1];
};
Task(int num, char n[], char c[], char d[]){
number = num;
name = new char[strlen(n) + 1];
dueDate = new char[strlen(d) …Run Code Online (Sandbox Code Playgroud)