• Skip to main content
  • Skip to header right navigation
  • Skip to site footer

My Online Training Hub

Learn Dashboards, Excel, Power BI, Power Query, Power Pivot

  • Courses
  • Pricing
    • Free Courses
    • Power BI Course
    • Excel Power Query Course
    • Power Pivot and DAX Course
    • Excel Dashboard Course
    • Excel PivotTable Course – Quick Start
    • Advanced Excel Formulas Course
    • Excel Expert Advanced Excel Training
    • Excel Tables Course
    • Excel, Word, Outlook
    • Financial Modelling Course
    • Excel PivotTable Course
    • Excel for Customer Service Professionals
    • Excel for Operations Management Course
    • Excel for Decision Making Under Uncertainty Course
    • Excel for Finance Course
    • Excel Analysis ToolPak Course
    • Multi-User Pricing
  • Resources
    • Free Downloads
    • Excel Functions Explained
    • Excel Formulas
    • Excel Add-ins
    • IF Function
      • Excel IF Statement Explained
      • Excel IF AND OR Functions
      • IF Formula Builder
    • Time & Dates in Excel
      • Excel Date & Time
      • Calculating Time in Excel
      • Excel Time Calculation Tricks
      • Excel Date and Time Formatting
    • Excel Keyboard Shortcuts
    • Excel Custom Number Format Guide
    • Pivot Tables Guide
    • VLOOKUP Guide
    • ALT Codes
    • Excel VBA & Macros
    • Excel User Forms
    • VBA String Functions
  • Members
    • Login
    • Password Reset
  • Blog
  • Excel Webinars
  • Excel Forum
    • Register as Forum Member

Creating Borders, xlMedium not working|VBA & Macros|Excel Forum|My Online Training Hub

You are here: Home / Creating Borders, xlMedium not working|VBA & Macros|Excel Forum|My Online Training Hub
Avatar
sp_LogInOut Log In sp_Registration Register
sp_Search Search
Advanced Search|Last Search Results
Search
Forum Scope




Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
sp_Search Search
sp_RankInfo
Lost password?
sp_CrumbsHome HomeExcel ForumVBA & MacrosCreating Borders, xlMedium not work…
sp_PrintTopic sp_TopicIcon
Creating Borders, xlMedium not working
Avatar
jomili
Member
Members
Level 0
Forum Posts: 9
Member Since:
June 27, 2016
sp_UserOfflineSmall Offline
1
January 3, 2020 - 3:52 am
sp_Permalink sp_Print

I created the below macro today.  Going through it, if I choose xlThin or xlThick for my thickness it works fine, if I choose xlMedium it gives an "Unable to set the Weight property of the Border Class", and I can't figure out why.  The macro lives in my PERSONAL, and I've been testing it on a blank sheet, so no example workbook is attached.  Any help would be appreciated.

 

Sub BorderChooser()
'in Formatting Tools
Dim Area As String
Dim Style As String
Dim Thickness As String

Area = InputBox("All Choices work with your Entire Selection." & vbCrLf & vbCrLf & _
            "Typing A creates a Border around it all." & vbCrLf & _
            "    C  creates a Border around each Column." & vbCrLf & _
            "    R  creates a Border around each Row." & vbCrLf & _
            "    U  creates top and bottom borders for each row.", "How are we bordering?")
    If StrPtr(Area) = 0 Then Exit Sub   'User Canceled
Style = InputBox("How Thick do you want your lines?" & vbCrLf & _
                "Enter T for Thick, " & vbCrLf & _
                "S for Thin(Skinny), or" & vbCrLf & _
                "M for Medium.", "Choose your Line Weight")
    If StrPtr(Style) = 0 Then Exit Sub   'User Canceled
    Select Case UCase(Style)
        Case "T"
        Thickness = xlThick
        Case "S"
        Thickness = xlThin
        Case "M"
        Thickness = xlMedium
        Case Else
        Exit Sub
    End Select
    Select Case UCase(Area)
        Case "A"
        Selection.BorderAround Weight:=Thickness
        Case "C"
        With Selection
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideVertical).Weight = Thickness
        .BorderAround Weight:=Thickness
        End With
        Case "R"
        With Selection
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).Weight = Thickness
        .BorderAround Weight:=Thickness
        End With
        Case "U"
        With Selection
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).Weight = Thickness
        End With
        Case Else
        Exit Sub
    End Select
End Sub

sp_AnswersTopicSeeAnswer See Answer
Avatar
Philip Treacy
Admin
Level 10
Forum Posts: 1518
Member Since:
October 5, 2010
sp_UserOfflineSmall Offline
2
January 3, 2020 - 10:30 am
sp_Permalink sp_Print

Hi Jomili,

The variable Thickness is defined as a string but it should be a numeric e.g. Long

https://docs.microsoft.com/en-.....rderweight

Regards

Phil

sp_AnswersTopicAnswer
Answers Post
Avatar
jomili
Member
Members
Level 0
Forum Posts: 9
Member Since:
June 27, 2016
sp_UserOfflineSmall Offline
3
January 3, 2020 - 11:47 pm
sp_Permalink sp_Print

OMG, I don't think I ever would have considered it numeric.  But you're absolutely right; changing it to a LONG makes all the difference.  Thank you!

Avatar
Philip Treacy
Admin
Level 10
Forum Posts: 1518
Member Since:
October 5, 2010
sp_UserOfflineSmall Offline
4
January 4, 2020 - 3:17 pm
sp_Permalink sp_Print

🙂 No worries.  I think all (?) the constants in VBA are numeric values.  

Avatar
Velouria
London or thereabouts
Moderator
Members


Trusted Members

Moderators
Level 4
Forum Posts: 627
Member Since:
November 1, 2018
sp_UserOfflineSmall Offline
5
January 6, 2020 - 10:15 pm
sp_Permalink sp_Print

They are - Enums can only be whole numbers.

Avatar
jomili
Member
Members
Level 0
Forum Posts: 9
Member Since:
June 27, 2016
sp_UserOfflineSmall Offline
6
January 7, 2020 - 2:03 am
sp_Permalink sp_Print

That raises a question; in my original macro, where I dimmed Thickness As a String, xlThin or xlThick worked fine.  Why didn't they error, why was it only xlMedium?

Avatar
Philip Treacy
Admin
Level 10
Forum Posts: 1518
Member Since:
October 5, 2010
sp_UserOfflineSmall Offline
7
January 7, 2020 - 9:41 am
sp_Permalink sp_Print

VBA allows implicit conversion - converting one data type to another - and it handles the type conversion.  So when you assigned a number to a string, VBA just dealt with it.

When it came to assigning that string value to the Borders Weight, VBA seems to have handled the conversion back from a string to a number just fine for  xlThin (2) and xlThick (4).  I'm concluding that is because they are positive numbers.

However xlMedium has a value of -4138 and it seems VBA hasn't converted this back from a string to a number.  I don't know why this would be, I don't know how the underlying type conversion works.

If you used ActiveCell.Borders(xlInsideHorizontal).Weight = CLng(Thickness) then it would have worked as you would be explicitly converting the string to a long.

Cheers

Phil

Avatar
jomili
Member
Members
Level 0
Forum Posts: 9
Member Since:
June 27, 2016
sp_UserOfflineSmall Offline
8
January 8, 2020 - 12:11 am
sp_Permalink sp_Print

Thanks Phillip.  I also thought that maybe the negative on xlMedium was throwing it off, but didn't understand why.  Thanks for the CLng trick, I can see that could be useful if I'd declared it as a string and needed it as a string for one use, but as a LONG for another. 

sp_Feed
Go to top
Forum Timezone: Australia/Brisbane
Most Users Ever Online: 245
Currently Online: Brian Pham, Riny van Eekelen
Guest(s) 9
Currently Browsing this Page:
1 Guest(s)
Top Posters:
SunnyKow: 1432
Anders Sehlstedt: 871
Purfleet: 412
Frans Visser: 346
David_Ng: 306
lea cohen: 219
Jessica Stewart: 205
A.Maurizio: 202
Aye Mu: 201
jaryszek: 183
Newest Members:
stuart burge
Bruce Tang Nian
Scot C
Othman AL MUTAIRI
Misael Gutierrez Sr.
Attif Ihsan
Kieran Fee
Murat Hasanoglu
Brett Dryland
Saeed Aldousari
Forum Stats:
Groups: 3
Forums: 24
Topics: 6223
Posts: 27295

 

Member Stats:
Guest Posters: 49
Members: 31920
Moderators: 3
Admins: 4
Administrators: Mynda Treacy, Philip Treacy, Catalin Bombea, FT
Moderators: MOTH Support, Velouria, Riny van Eekelen
© Simple:Press —sp_Information

Sidebar

Blog Categories

  • Excel
  • Excel Charts
  • Excel Dashboard
  • Excel Formulas
  • Excel PivotTables
  • Excel Shortcuts
  • Excel VBA
  • General Tips
  • Online Training
  • Outlook
  • Power Apps
  • Power Automate
  • Power BI
  • Power Pivot
  • Power Query
microsoft mvp logo
trustpilot excellent rating
Secured by Sucuri Badge
MyOnlineTrainingHub on YouTube Mynda Treacy on Linked In Mynda Treacy on Instagram Mynda Treacy on Twitter Mynda Treacy on Pinterest MyOnlineTrainingHub on Facebook
 

Company

  • About My Online Training Hub
  • Disclosure Statement
  • Frequently Asked Questions
  • Guarantee
  • Privacy Policy
  • Terms & Conditions
  • Testimonials
  • Become an Affiliate

Support

  • Contact
  • Forum
  • Helpdesk - For Technical Issues

Copyright © 2023 · My Online Training Hub · All Rights Reserved. Microsoft and the Microsoft Office logo are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries. Product names, logos, brands, and other trademarks featured or referred to within this website are the property of their respective trademark holders.