Excel Vba Worksheet数据更改

****编辑***

我已经更新了我的日子作为string,现在我有一个问题gettign DayNum返回作为一个整数。 我的话,如果其他的说法一路下降到星期六。


我不确定这是否可能。 但我正在尝试更改哪个工作表,我正在从哪一天抽取数据。 “日”是variables。

我的代码行是麻烦的,重复的是

Worksheets("Daily Info").Range("D24").Value = Worksheets(Day).Range("AB34").Value 

工作表(天)是问题,我希望它改变之间的太阳 – 坐

我有一个题为太阳的工作表。 我需要数据的单元格是相同的,但我需要将数据拉到另一个表取决于一天会议更新打印输出。

  DayNum = Weekday(Today) If DayNum = 1 Then Day = "Sun" ElseIf DayNum = 2 Then Day = "Mon" ElseIf DayNum = 3 Then Day = "Tues" ElseIf DayNum = 4 Then Day = "Wed" ElseIf DayNum = 5 Then Day = "Thur" ElseIf DayNum = 6 Then Day = "Fri" Else: Day = "Sat" End If Worksheets("Daily Info").Range("D24").Value = Worksheets(Day).Range("AB34").Value Worksheets("Daily Info").Range("D25").Value = Worksheets(Day).Range("AB27").Value Worksheets("Daily Info").Range("D26").Value = Worksheets(Day).Range("AB31").Value Worksheets("Daily Info").Range("D27").Value = Worksheets(Day).Range("AB37").Value Worksheets("Daily Info").Range("D28").Value = Worksheets(Day).Range("AB8").Value Worksheets("Daily Info").Range("D29").Value = Worksheets(Day).Range("AB3").Value Worksheets("Daily Info").Range("D30").Value = Worksheets(Day).Range("AB20").Value 

看来你正在使用不带引号的string。 当你设置date,它应该是工作表的名称,因此“周二”不是周二。

另外Weekday(今天)不会给你正确的输出,请尝试Weekday(Now)。

 Sub GatherData() Dim Day As String Dim DayNum As String DayNum = Weekday(Now) If DayNum = 1 Then Day = "Sun" ElseIf DayNum = 2 Then Day = "Mon" ElseIf DayNum = 3 Then Day = "Tues" ElseIf DayNum = 4 Then Day = "Wed" ElseIf DayNum = 5 Then Day = "Thur" ElseIf DayNum = 6 Then Day = "Fri" Else: Day = "Sat" End If Worksheets("Daily Info").Range("D24").Value = Worksheets(Day).Range("AB34").Value Worksheets("Daily Info").Range("D25").Value = Worksheets(Day).Range("AB27").Value Worksheets("Daily Info").Range("D26").Value = Worksheets(Day).Range("AB31").Value Worksheets("Daily Info").Range("D27").Value = Worksheets(Day).Range("AB37").Value Worksheets("Daily Info").Range("D28").Value = Worksheets(Day).Range("AB8").Value Worksheets("Daily Info").Range("D29").Value = Worksheets(Day).Range("AB3").Value Worksheets("Daily Info").Range("D30").Value = Worksheets(Day).Range("AB20").Value End Sub 

尝试在if块中的date名称周围添加引号。

像这样:

 If DayNum = 1 Then Day = "Sun" ElseIf DayNum = 2 Then Day = "Mon" ElseIf DayNum = 3 Then Day = "Tues" ElseIf DayNum = 4 Then Day = "Wed" ElseIf DayNum = 5 Then Day = "Thur" ElseIf DayNum = 6 Then Day = "Fri" Else: Day = "Sat" End If 

看来你忘了把你的日子初始化为一个string。

 Dim Day As String Dim DayNum As String DayNum = Weekday(Today) If DayNum = 1 Then Day = "Sun" ElseIf DayNum = 2 Then Day = "Mon" ElseIf DayNum = 3 Then Day = "Tues" ElseIf DayNum = 4 Then Day = "Wed" ElseIf DayNum = 5 Then Day = "Thur" ElseIf DayNum = 6 Then Day = Fri Else: Day = "Sat" End If Worksheets("Daily Info").Range("D24").Value = Worksheets(Day).Range("AB34").Value Worksheets("Daily Info").Range("D25").Value = Worksheets(Day).Range("AB27").Value Worksheets("Daily Info").Range("D26").Value = Worksheets(Day).Range("AB31").Value Worksheets("Daily Info").Range("D27").Value = Worksheets(Day).Range("AB37").Value Worksheets("Daily Info").Range("D28").Value = Worksheets(Day).Range("AB8").Value Worksheets("Daily Info").Range("D29").Value = Worksheets(Day).Range("AB3").Value Worksheets("Daily Info").Range("D30").Value = Worksheets(Day).Range("AB20").Value 

这是一个非常简单的方法来获得Daystring:

 Sub dural() Dim Day As String Day = LCase(Format(Date, "ddd")) Worksheets("Daily Info").Range("D24").Value = Worksheets(Day).Range("AB34").Value End Sub 

这假定标签名都是小写的。

就像已经解释过的其他评论一样,你需要用包装你的Strings

你目前正在比较一个String与一个Integer在你的if-statments ,这会导致你的if结构总是去else语句。

无论如何,我还build议你使用Select Case Statment Statment而不是重复If Then ElseIf Then

 Dim Day As String Select Case Weekday(Now) Case 1: Day = "Sun" Case 2: Day = "Mon" Case 3: Day = "Tues" Case 4: Day = "Wed" Case 5: Day = "Thur" Case 6: Day = "Fri" Case Else: Day = "Sat" End Select .... 

由于你的DayNum是一个String你必须像这样比较它:

 If DayNum = "1" Then 

或者你只是将DayNum声明为Integer ,因为weekday()return value是一个Integer