2017-08-17 75 views
0

這個代碼有兩個問題,我需要一些幫助,我是vba的新手,不確定問題的原因是什麼。Excel VBA圖表最大比例誤差

第一個問題是,當Me.Range("L7") = Format(Me.Range("C4")....)獲得格式化時,它會以美國格式「mm/dd/yyyy」放置日期。但是,下一行Me.Range(「L8」)是否放入了正確的「dd/mm/yyyy」格式?

第二個問題是,當我改變圖表的最大軸時,我得到了一個類型不匹配的錯誤,但最小軸比例變化的工作完美的罰款?

任何幫助表示讚賞。

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 

回答

1

它不適合通過格式函數更改單元格的值。 最好通過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