Excel宏保留X变量?

Excel宏保留X变量?,excel,vba,Excel,Vba,我正在尝试使用宏从电子表格创建一个图形。我有一个自动生成的图形,显示正确的值,但似乎自动调整为旧数据集的大小 我已经包含了一个变量X,在它没有自动调整大小之后,它在一个循环中,在达到行数后,向上取整到最接近的50。 当我第一次从一个有2312行的数据集生成一个图形时,X设置为2350,但现在我使用的是一个有609行的数据集,X仍然设置为2350 ''Graph Creator 'Data Selection Set sht = Sheets("Data") Sheets("D

我正在尝试使用宏从电子表格创建一个图形。我有一个自动生成的图形,显示正确的值,但似乎自动调整为旧数据集的大小

我已经包含了一个变量X,在它没有自动调整大小之后,它在一个循环中,在达到行数后,向上取整到最接近的50。 当我第一次从一个有2312行的数据集生成一个图形时,X设置为2350,但现在我使用的是一个有609行的数据集,X仍然设置为2350

''Graph Creator
'Data Selection
     Set sht = Sheets("Data")
     Sheets("Data").Select
 Dim LastColumn As Long
 Dim StartCell As Range
 Set StartCell = Range("D1")

 'Find Last Row and Column
   LastRow = StartCell.SpecialCells(xlCellTypeLastCell).Row
   LastColumn = StartCell.SpecialCells(xlCellTypeLastCell).Column
   sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
   ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
   ActiveChart.SetSourceData Source:=Range(StartCell, sht.Cells(LastRow, LastColumn))

'Graph axis sizing
     Dim X As Integer
     X = 100
     Do
     If X < LastRow Then
     X = X + 50
     Else
     End If
Loop Until X > LastRow


'Graph Positioning
    Sheets("Data").Select
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Graph"
    With ActiveChart.Parent
   .Height = 500 ' 'resized to approx 2/3 24" screen at 100% Zoom
   .Width = 1000 '
End With
    ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MaximumScale = X
With ActiveChart.Parent
.Left = Range("A1").Left
.Top = Range("A1").Top
End With
    ActiveChart.ChartTitle.Select
    Selection.Delete
    Application.ScreenUpdating = True
End Sub
“图形创建者”
“数据选择
设置sht=图纸(“数据”)
工作表(“数据”)。选择
将最后一列变长
暗淡的StartCell As范围
设置StartCell=范围(“D1”)
'查找最后一行和最后一列
LastRow=StartCell.SpecialCells(xlCellTypeLastCell).Row
LastColumn=StartCell.SpecialCells(xlCellTypeLastCell.Column)
短范围(起始单元格、短单元格(最后一行、最后一列))。选择
ActiveSheet.Shapes.AddChart2(240,xlXYScatterSmoothNoMarkers)。选择
ActiveChart.SetSourceData源:=范围(起始单元格、短单元格(最后一行、最后一列))
'图形轴大小调整
作为整数的Dim X
X=100
做
如果X<最后一行,则
X=X+50
其他的
如果结束
循环直到X>最后一行
“图形定位”
工作表(“数据”)。选择
ActiveChart.Location其中:=xlLocationAsObject,名称:=“Graph”
使用ActiveChart.Parent
.高度=500'',在100%缩放时调整为大约2/3 24''屏幕
.宽度=1000'
以
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlCategory)。选择
ActiveChart.Axes(xlCategory).MaximumScale=X
使用ActiveChart.Parent
.左=范围(“A1”).左
.Top=范围(“A1”).Top
以
ActiveChart.ChartTitle.Select
选择。删除
Application.ScreenUpdating=True
端接头

当我第一次从包含2312行的数据集生成图形时,X设置为2350,这是预期的输出,但现在我使用的是包含609行的数据集,X仍然设置为2350,而不是650。

如果数据位于D列,请尝试以这种方式查找最后一行

LastRow = range("D" & rows.count).end(xlup).row
SpecialCells(xlCellTypeLastCell)
不可靠,因为它可以“记住”旧数据

(顺便说一句,不知道你在用
X
做什么)


也值得一读。

不确定,看不到您在哪里定义系列?根据链接,我将删除选择/激活并使用变量引用您的范围和图表,然后您可以直接引用它们。