Excel宏保留X变量?
我正在尝试使用宏从电子表格创建一个图形。我有一个自动生成的图形,显示正确的值,但似乎自动调整为旧数据集的大小 我已经包含了一个变量X,在它没有自动调整大小之后,它在一个循环中,在达到行数后,向上取整到最接近的50。 当我第一次从一个有2312行的数据集生成一个图形时,X设置为2350,但现在我使用的是一个有609行的数据集,X仍然设置为2350Excel宏保留X变量?,excel,vba,Excel,Vba,我正在尝试使用宏从电子表格创建一个图形。我有一个自动生成的图形,显示正确的值,但似乎自动调整为旧数据集的大小 我已经包含了一个变量X,在它没有自动调整大小之后,它在一个循环中,在达到行数后,向上取整到最接近的50。 当我第一次从一个有2312行的数据集生成一个图形时,X设置为2350,但现在我使用的是一个有609行的数据集,X仍然设置为2350 ''Graph Creator 'Data Selection Set sht = Sheets("Data") Sheets("D
''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
做什么)
也值得一读。不确定,看不到您在哪里定义系列?根据链接,我将删除选择/激活并使用变量引用您的范围和图表,然后您可以直接引用它们。