Hi, Welcome to my Excel VBA Blog. My name is Paul Kelly and I have created this blog to help you master VBA – the programming language for Excel Macros. I like to take complex VBA topics and explain them in easily understood blog posts. The posts are comprehensive and provide practical and useful VBA information and examples.

VBA Handbook Queries
If you wish to contact me regarding the Excel VBA Handbook or my Amazon books you can email at

General VBA Queries

Due to the large volume of emails that I receive, I do not provide help with individual queries unless they are related to my courses or subscriptions. I also don’t provide individual one-to-one training or consultancy for individuals at this time. If you have a question about VBA then you can post to my Facebook Group where there are lots of people who can help.

Live VBA Webinars
I regularly host exclusive free webinars for members of my email list. You can join my list by signing up for any of the many bonus items on this website including the one on the front page of the website. You can gain access to the webinar archive by signing up here.


  1. Hey Paul,

    I have really appreciated your tutorials. Through it, I have gotten a spark for a project idea. I would like to compile a family contacts list in an Excel workbook and then make and autogenerated family tree (flowchart) based on properties of each of the contacts. So far I have just been recording macros with methods I want to use and picking them apart to write code. I would love to hear if you have any thoughts on this topic

    I am aware that there are software products available already that do this and I wanted to get your thoughts on the feasibility of this task. It would be a fun project for me and I am not eager to spend money on something right away



  2. I have just found you tutorials and I must say that your website is the best ever to find ideas to resolve problems. It is very exhaustive and well presented.
    If one day, you write a book out of your tutorials, please let me know.

      1. Hi Paul,

        I am developing Excel VBA for both the Mac and Windows users and could use some help getting around some of the compatibility issues.

        Which brings me to two questions:

        1. Do you have experience developing VBA for the Mac platform?
        2. If yes, do you provide consulting services on a per incident basis?

        Looking forward to hearing from you!

        BTW, It looks like you have some great resources on your website. I just signed up as a new member.


  3. I am learning VBA macros. I want to learn completely. But I can’t afford to pay for that course. I’m not earning much money now.If you help me to give me an access for a while it will be helpful for me.

  4. Hello Paul, I’d like to say many thanks to you for doing a great job – your articles are extremely useful and extremely all-embracing. They give an opportunity to learn VBA quite easy, and do this from the very beginner level to the very advanced one.

    And that’s the reason, I would like to ask you to share your approach to naming. As I understand, there is a quantity of such info over internet, but as I said – it would be extremely interesting to know exact approach/convention YOU are stick to.

    And once again, thanks a lot for your articles, they are really admirable!

  5. Hi Paul,

    Thanks for tutorials.

    I have a query regarding notepad.

    I have data in notepad and want to extract in excel.

    Could you please help me in this.

    Manish kumar

  6. Hi Paul:
    I want to thank you for your awesome tutorials. You have really improved my VBA skills. Do you have any content on web scraping into excel using VBA and automating the process? I did not find it scrolling your site. Thank you for all your effort!
    Best Regards,

  7. Hi Paul, Love your blog.

    I’m working on remaking a macro and I’m running into a perplexing issue. The macro runs at different speeds depending on how the macro is started. If I’m in the editor and press “F5” the macro takes 5 seconds. If I use a button, hotkey or select the macro from the “Macros” dialogue window, the same macro takes 5-10 times longer to execute. It seems to slowdown around usage of arrays. I have an older version of the macro without arrays and the speed of the macro is equal with all start methods (slow, but equal). I’ve not seen this before but have found a few unanswered questions out there. Most want to address the efficiency of the code but that is not the question. Any ideas would be greatly appreciated.

  8. I’ve been using VB/VBA for many years, and in all that time, I really like your practical teaching approach the most, which covers advanced concepts clearly without dumbing things down. 

    And quite obviously, you actually use Excel, and you’re not just reading from the manual. 

    I am happily recommending your material to someone I am mentoring. It will save me a lot of time, and I know this person will be in good hands.

  9. Hi Paul,
    I learned by your videos that using application.screenupdating the VBA code runs much faster. However, I have the impression that it is no longer possible to switch off screen updating in Office 365. Do you have a solution. When looking for a solution on the Internet, I only found frustrated users.
    best regards
    Frank Peffekoven

  10. Hi Paul,

    Recently I wrote a Vba Script which exports data from an Excel document into .csv which is then imported into a different Software.
    There I noticed a significant (at least 300%) runtime extension going from .Xls to. xlsm file Format. Did you had similar experience.

    Kind regards

  11. Hi Paul, thanks for your *really* useful website.

    Not sure if you’ve covered this one, but just came across an unexpected gotcha which can cause significant performance impacts.

    The IIF function is IIF(, , ). The problem is that it evaluates BOTH and before determining which to return as a result of evaluating . If either of these generate significant processing then you really slow down performance, entirely unneccesarily.

    Worse, if evaluates to True, but generates an error, IIF will return an error despite that you don’t even need the result.

    IIF is a nice shorthand way of coding, but sometimes an IF … THEN … ELSE is better!


Leave a Reply

Your email address will not be published. Required fields are marked *