Excel VBA图表最大比例误差
这个代码的两个问题,我需要一些帮助,我是新来的vba,不知道是什么原因的问题。
第一个问题是,当Me.Range("L7") = Format(Me.Range("C4")....)
被格式化时,它把date以美式格式“mm / dd / yyyy”。 但是,下一行Me.Range(“L8”)被放入正确的“dd / mm / yyyy”格式?
第二个问题是,当我改变图表的最大轴时,我得到一个types不匹配的错误,但最小轴比例变化的作品完美的罚款?
任何帮助赞赏。
Private Sub CommandButton1_Click() answer = MsgBox("This will prepare the workbook for the next month, are you sure?", vbYesNo) If answer = vbNo Then Exit Sub Range("c34") = "=DATE($B$2,$A$2,A34)" 'enters formula into cell c34 Range("a2") = Month(Date) - 1 'changes month to last month Range("a3") = Year(Date) If Month(Date) - 1 <> Month(Range("c34")) Then Range("C34").Clear 'checks if last date in column is in same month, if not, clear End If myLR = ThisWorkbook.Sheets("Data Input").Cells(Rows.Count, 3).End(xlUp).Row 'grabs date in last row Me.Range("L7") = Format(Me.Range("c4"), "dd/mm/yyyy") 'gets start date of month and formats it Me.Range("L8") = Format(Me.Cells(myLR, 3).Value, "dd/mm/yyyy") 'gets last date of month and formats it Range("K7") = "First Day of Month" Range("K8") = "Last Day of Month" 'Chart section Sheets("Site 5").Select ActiveChart.ChartArea.Select ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.Axes(xlCategory).MinimumScale = Sheets("data input").Range("L7") ActiveChart.Axes(xlCategory).MaximumScale = Sheets("data input").Range("L8") ActiveChart.Axes(xlCategory).Select Selection.TickLabels.NumberFormat = "d/mm/yyyy" End Sub
通过格式化function来改变单元格的值是不合适的。 最好通过NumberFormatLocal更改单元格的格式。
Private Sub CommandButton1_Click() answer = MsgBox("This will prepare the workbook for the next month, are you sure?", vbYesNo) If answer = vbNo Then Exit Sub Range("c34") = "=DATE($B$2,$A$2,A34)" 'enters formula into cell c34 Range("a2") = Month(Date) - 1 'changes month to last month Range("a3") = Year(Date) If Month(Date) - 1 <> Month(Range("c34")) Then Range("C34").Clear 'checks if last date in column is in same month, if not, clear End If myLR = ThisWorkbook.Sheets("Data Input").Cells(Rows.Count, 3).End(xlUp).Row 'grabs date in last row 'Me.Range("L7") = Format(Me.Range("c4"), "dd/mm/yyyy") 'gets start date of month and formats it Me.Range("L7") = Me.Range("c4") Me.Range("L7").NumberFormatLocal = "dd/mm/yyyy" 'Me.Range("L8") = Format(Me.Cells(myLR, 3).Value, "dd/mm/yyyy") 'gets last date of month and formats it Me.Range("L8") = Me.Cells(myLR, 3).Value Me.Range("L8").NumberFormatLocal = "dd/mm/yyyy" Range("K7") = "First Day of Month" Range("K8") = "Last Day of Month" 'Chart section Sheets("Site 5").Select ActiveChart.ChartArea.Select ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.Axes(xlCategory).MinimumScale = Sheets("data input").Range("L7") ActiveChart.Axes(xlCategory).MaximumScale = Sheets("data input").Range("L8") ActiveChart.Axes(xlCategory).Select Selection.TickLabels.NumberFormat = "d/mm/yyyy" End Sub