Glam Prestige Journal

Bright entertainment trends with youth appeal.

I'm trying to use VBA so that a click of a button will save the worksheet as a particular name (which is linked to a certain cell), however, I want it to canel the save if certain cells are blank.

When doing the code for 1 cell it works fine, however, when I put a range of cells, it gives me a "Run-time error 13: Type mismatch" error.

My code is below:

Private Sub CommandButton1_Click()
IF Sheets("Event").range("C4:C24").Value = "" Then
Cancel = True
MsgBox "Please fill in column C"
Else
Dim IntialName As String
Dim fileSaveName As Variant
InitialName = range("c7")
fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, _ fileFilter:="Excel Files (*.xlsm), *.xlsm") If fileSaveName <> "False" Then Application.DisplayAlerts = False ThisWorkbook.SaveAs (fileSaveName) Application.DisplayAlerts = True End If
End If
End Sub
1

2 Answers

Range(...) without property specifying returns its default property .Value.

If a range contains 1 cell, .Value returns scalar value.

If a range contains more than 1 cell, .Value returns 2-dimentional array of Variant. Of course it cannot be assigned into a String type variable or compared with string literal.

Thank you @Mathieu Guindon and @Akina.

I've change my script as follows and now it's working:

Private Sub CommandButton2_Click()
Dim myrange As range
Set myrange = Worksheets("Event").range("C4:C24")
If Application.WorksheetFunction.CountA(myrange) < _
myrange.Cells.Count Then
Cancel = True
MsgBox "Cells in column C must not be empty."
Else
Dim IntialName As String
Dim fileSaveName As Variant
InitialName = range("c7")
fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, _ fileFilter:="Excel Files (*.xlsm), *.xlsm") If fileSaveName <> "False" Then Application.DisplayAlerts = False ThisWorkbook.SaveAs (fileSaveName) Application.DisplayAlerts = True End If
End If
End Sub

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy