Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excelvba图表_Excel_Vba - Fatal编程技术网

excelvba图表

excelvba图表,excel,vba,Excel,Vba,我有两张工作簿。第一张表名为“摘要”,另一张表名为“目标”。 我在摘要选项卡中有图表。我想将该图表的源数据设置为包含日期的目标选项卡。Ex(2013年1月11日至2013年11月30日)。 每天我都想把图表日期改成相应的日期。因此,我在excel vba中进行了如下尝试: sheets("Summary ").Select ActiveSheet.ChartObjects("Chart 3").Activate ActiveChart.PlotArea.Select Sheets("Target

我有两张工作簿。第一张表名为“摘要”,另一张表名为“目标”。 我在摘要选项卡中有图表。我想将该图表的源数据设置为包含日期的目标选项卡。Ex(2013年1月11日至2013年11月30日)。 每天我都想把图表日期改成相应的日期。因此,我在excel vba中进行了如下尝试:

sheets("Summary ").Select
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
Sheets("Target").Select
a = InputBox("enter the date - format(mm/dd/yyyy)")

Set findrow = Range("a:a").Find(what:=a, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Rows

findrownumber = findrow.Row

ActiveChart.SeriesCollection(2).Values = "='Target Chart'!R4C78:R" & findrownumber & "C78"
End sub
当我试图在公式中输入源数据值时,它显示错误


请帮帮我。

这是我尝试过的代码,它可以工作。我可能在创建此示例时切换了工作表的名称,但您可以在代码中更改:)

假设Summary选项卡如下所示

此时,您在
Target
工作表中的图表如下所示。源数据设置为
=Summary$A$1:$A$6

现在试试这个代码

Option Explicit

Sub Sample()
    Dim wsSum As Worksheet, wsTgt As Worksheet
    Dim objChart As ChartObject, chrt As Chart
    Dim sDate
    Dim findrow As Long
    Dim aCell As Range

    '~~> Accept the date
    sDate = InputBox("enter the date - format(mm/dd/yyyy)")

    '~~> Check if user entered something
    If sDate <> "" Then
        '~~> Set your respective worksheets
        Set wsSum = ThisWorkbook.Sheets("Summary")
        Set wsTgt = ThisWorkbook.Sheets("Target")

        '~~> Find the date in the cell
        With wsSum
            For Each aCell In .Columns(1).Cells
                If Format(aCell.Value, "mm/dd/yyyy") = sDate Then
                    '~~> Get the row number
                    findrow = aCell.Row
                    Exit For
                End If
            Next aCell
        End With

        '~~> Update the chart
        With wsTgt
            Set objChart = .ChartObjects("Chart 1")
            Set chrt = objChart.Chart

            chrt.SeriesCollection(1).Values = "='Summary'!R4C1:R" & findrow & "C1"
        End With
    End If
End Sub
选项显式
子样本()
点心wsSum作为工作表,wsTgt作为工作表
Dim objChart作为图表对象,chrt作为图表
暗色
昏暗的芬德罗和我一样长
Dim aCell As系列
“~~>接受日期
sDate=InputBox(“输入日期-格式(mm/dd/yyyy)”)
“~~>检查用户是否输入了内容
如果sDate为“”,则
“~~>设置各自的工作表
设置wsSum=thiswoolk.Sheets(“摘要”)
设置wsTgt=ThisWorkbook.Sheets(“目标”)
“~~>在单元格中查找日期
与wsSum
对于.Columns(1).单元格中的每个aCell
如果格式(aCell.Value,“mm/dd/yyyy”)=sDate,则
“~~>获取行号
findrow=aCell.Row
退出
如果结束
下一个亚塞尔
以
“~~>更新图表
使用wsTgt
设置objChart=.ChartObjects(“图表1”)
设置chrt=objChart.Chart
chrt.SeriesCollection(1).Values=“='Summary'!R4C1:R”&findrow&“C1”
以
如果结束
端接头
运行代码时,在输入框中,将日期设置为“01/11/2013”

这是将源数据设置为
=Summary]时得到的输出$A$4:$A$11


重要:我不建议使用Inputbox来捕获日期。您可能需要使用

这是我尝试过的代码,它可以正常工作。我可能在创建此示例时切换了工作表的名称,但您可以在代码中更改:)

假设Summary选项卡如下所示

此时,您在
Target
工作表中的图表如下所示。源数据设置为
=Summary$A$1:$A$6

现在试试这个代码

Option Explicit

Sub Sample()
    Dim wsSum As Worksheet, wsTgt As Worksheet
    Dim objChart As ChartObject, chrt As Chart
    Dim sDate
    Dim findrow As Long
    Dim aCell As Range

    '~~> Accept the date
    sDate = InputBox("enter the date - format(mm/dd/yyyy)")

    '~~> Check if user entered something
    If sDate <> "" Then
        '~~> Set your respective worksheets
        Set wsSum = ThisWorkbook.Sheets("Summary")
        Set wsTgt = ThisWorkbook.Sheets("Target")

        '~~> Find the date in the cell
        With wsSum
            For Each aCell In .Columns(1).Cells
                If Format(aCell.Value, "mm/dd/yyyy") = sDate Then
                    '~~> Get the row number
                    findrow = aCell.Row
                    Exit For
                End If
            Next aCell
        End With

        '~~> Update the chart
        With wsTgt
            Set objChart = .ChartObjects("Chart 1")
            Set chrt = objChart.Chart

            chrt.SeriesCollection(1).Values = "='Summary'!R4C1:R" & findrow & "C1"
        End With
    End If
End Sub
选项显式
子样本()
点心wsSum作为工作表,wsTgt作为工作表
Dim objChart作为图表对象,chrt作为图表
暗色
昏暗的芬德罗和我一样长
Dim aCell As系列
“~~>接受日期
sDate=InputBox(“输入日期-格式(mm/dd/yyyy)”)
“~~>检查用户是否输入了内容
如果sDate为“”,则
“~~>设置各自的工作表
设置wsSum=thiswoolk.Sheets(“摘要”)
设置wsTgt=ThisWorkbook.Sheets(“目标”)
“~~>在单元格中查找日期
与wsSum
对于.Columns(1).单元格中的每个aCell
如果格式(aCell.Value,“mm/dd/yyyy”)=sDate,则
“~~>获取行号
findrow=aCell.Row
退出
如果结束
下一个亚塞尔
以
“~~>更新图表
使用wsTgt
设置objChart=.ChartObjects(“图表1”)
设置chrt=objChart.Chart
chrt.SeriesCollection(1).Values=“='Summary'!R4C1:R”&findrow&“C1”
以
如果结束
端接头
运行代码时,在输入框中,将日期设置为“01/11/2013”

这是将源数据设置为
=Summary]时得到的输出$A$4:$A$11


重要:我不建议使用Inputbox来捕获日期。您可能想使用

那么,它显示了什么错误?那么,它显示了什么错误?