excel - VBA:如何从股票 OHLC 图表的 Y 轴上的值中删除小数点
问题描述
VBA 专家。我已经为现有的 OHLC 股票图表编写了 VBA 代码。一切都很好; 除了带十进制的 Y 轴值(如 14083.23 到 14683.23),而我想要整数(14083 到 14683)。为此,我使用了 RoundUp 和 RoundDown 函数,但小数点仍然没有消失。你能否请建议我在哪里犯了错误。谢谢你。代码如下。
Sub Min75Candlestick()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("75Min")
Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Worksheets("Exhibit")
Dim LastRow As Long
LastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
Dim RngSt As Long
RngSt = LastRow - 59
Dim RngEnd As Long
RngEnd = LastRow + 15
Dim MyRng As Range
Set MyRng = ws1.Range(ws1.Cells(RngSt, 1), ws1.Cells(RngEnd, 5))
Dim OHLCRng
Set OHLCRng = ws1.Range(ws1.Cells(RngSt, 2), ws1.Cells(RngEnd, 5))
Dim OHLCMaxRng As Long
OHLCMaxRng = Application.WorksheetFunction.Max(OHLCRng)
Dim RoundMax As Long
RoundMax = Application.WorksheetFunction.RoundUp(OHLCMaxRng, 0)
Dim OHLCMinRng As Long
OHLCMinRng = Application.WorksheetFunction.Min(OHLCRng)
Dim RoundMin As Long
RoundMin = Application.WorksheetFunction.RoundDown(OHLCMinRng, 0)
Dim Padding As Double
Padding = 0.005
Dim OHLCChart As ChartObject
Set OHLCChart = ws2.ChartObjects(1)
With OHLCChart.Chart
.SetSourceData MyRng
.Axes (xlValue)
With .Axes(xlValue)
.MaximumScale = RoundMax * (1 + Padding) '+ (RoundMax * 1 / 100)
.MinimumScale = RoundMin * (1 - Padding) '- (RoundMin * 1 / 100)
End With
.ChartTitle.Text = "75Min Candlestick chart"
.Axes(xlValue, xlPrimary).HasTitle = False
.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
.Parent.Name = "OHLC Chart"
End With
结束子
解决方案
添加.TickLabels.NumberFormat = "#,##0"
Sub Min75Candlestick()
Const padding As Double = 0.005
Dim ws1 As Worksheet, ws2 As Worksheet
Dim MyRng As Range, OHLCRng As Range
Dim LastRow As Long, RngSt As Long, RngEnd As Long
Dim RoundMax As Long, RoundMin As Long
Set ws1 = ThisWorkbook.Worksheets("75Min")
LastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
RngSt = LastRow - 59
RngEnd = LastRow + 15
Set MyRng = ws1.Range(ws1.Cells(RngSt, 1), ws1.Cells(RngEnd, 5))
Set OHLCRng = ws1.Range(ws1.Cells(RngSt, 2), ws1.Cells(RngEnd, 5))
With Application.WorksheetFunction
RoundMax = .RoundUp(.Max(OHLCRng), 0)
RoundMin = .RoundDown(.Min(OHLCRng), 0)
End With
Dim OHLCChart As ChartObject
Set ws2 = ThisWorkbook.Worksheets("Exhibit")
Set OHLCChart = ws2.ChartObjects(1)
With OHLCChart.Chart
.Parent.Name = "OHLC Chart"
.ChartTitle.Text = "75Min Candlestick chart"
.SetSourceData MyRng
.Axes xlValue
.Axes(xlValue, xlPrimary).HasTitle = False
With .Axes(xlValue)
.MaximumScale = RoundMax * (1 + padding) '+ (RoundMax * 1 / 100)
.MinimumScale = RoundMin * (1 - padding) '- (RoundMin * 1 / 100)
.TickLabels.NumberFormat = "#,##0"
End With
.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
End With
End Sub
推荐阅读
- ios - 为什么 ViewController 只占屏幕的一半?
- sql - 如何在oracle中将两个结果列合并到具有交替结果的列中?
- xamarin - 如何使我的 Xamarin 应用程序的 Android 项目以 MainApplication.cs 而不是 MainActivity.cs 开头
- r - 将 xlsx 与 R jupyter notebook 一起使用
- botium-box - 如何在botium中使用带有话语文件的变量
- dataframe - 如何在列上使用 pyspark min max 函数
- linux - 从主机到 docker 容器中的 conan-repository 的连接问题
- c# - 从 EF 视图到 EF 表的关系
- html - 如何在网页中包含示例 html 代码
- python - 我的代码使用超过 25GB 的内存和崩溃