2017-08-17 1 views
0

Deux problèmes avec ce code que j'ai besoin d'aide, je suis nouveau sur vba et je ne sais pas quelle est la cause des problèmes.Excel VBA Chart Échelle maximale Erreur

Le premier problème est que lorsque Me.Range("L7") = Format(Me.Range("C4")....) est formaté, il met la date au format américain "mm/jj/aaaa". Cependant, la ligne suivante Me.Range ("L8") est mise dans le bon format "jj/mm/aaaa"?

Le deuxième problème est, quand je change l'axe maximum de diagramme j'obtiens une erreur d'incompatibilité de type, pourtant les changements minimum d'échelle d'axe fonctionnent parfaitement bien?

Toute aide appréciée.

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 

Répondre

1

Il n'est pas approprié de changer la valeur de la cellule par la fonction de format. Il est préférable de changer le format de la cellule par 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