{"id":243,"date":"2007-01-31T11:40:07","date_gmt":"2007-01-31T16:40:07","guid":{"rendered":"http:\/\/www.toomik.net\/helen\/wordpress\/?p=243"},"modified":"2007-01-31T11:40:07","modified_gmt":"2007-01-31T16:40:07","slug":"interviewing-for-an-excel-vba-job","status":"publish","type":"post","link":"https:\/\/www.toomik.net\/helen\/blog\/2007\/01\/31\/interviewing-for-an-excel-vba-job\/","title":{"rendered":"Interviewing for an Excel VBA job"},"content":{"rendered":"<p>\nI received a comment on <a href=\"http:\/\/www.toomik.net\/helen\/blog\/2006\/01\/26\/more_interviews\/index.php\">one of my older posts<\/a> about interviewing for an Excel VBA job, asking about possible interview questions. I&rsquo;ve been on both sides of the interview table, and I enjoy interviewing, and I&rsquo;ve thought about this quite a lot. So I thought I&rsquo;d write a more thorough reply, and make it a full post instead of hiding it in a comment. Maybe others can find this useful, too.\n<\/p>\n<p>\nIf I was conducting an interviewing for an Excel VBA, I would probe you from the following directions.\n<\/p>\n<p>\n<b>One<\/b>: your general attitude towards and approach to programming. I&rsquo;d ask you to write code to solve some simple generic problem that shouldn&rsquo;t take you much more than 15 minutes. It could be sorting an array, or printing a checkerboard pattern of 0s and 1s, etc. I&rsquo;d check that you have meaningful variable names, that you declare your variables (which in VBA you don&rsquo;t necessarily need to do), that your code is reasonably well-organised etc.\n<\/p>\n<p>\n<b>Two<\/b>: your knowledge of Excel. I&rsquo;d want to see that you can use array formulas and pivot tables, lookup functions, named ranges, etc. You can&rsquo;t be a good Excel VBA developer if you&rsquo;re not a good Excel developer. I would give you a laptop and a few actual problems to solve, and leave you to it.\n<\/p>\n<p>\n<b>Three<\/b>: your knowledge of the Excel object model. I&rsquo;d ask you to write code that manipulates a worksheet &ndash; for example, sort and filter a range, or clean out duplicate data from a list, or consolidate data from multiple files. I&rsquo;d look for knowledge of and ability to work with fundamental Excel objects such as Workbook, Worksheet, Range etc; also I&rsquo;d definitely want to see that you don&rsquo;t write &ldquo;macro recorder&rdquo;-style code with Select and Activate everywhere.\n<\/p>\n<p>\n<b>Four<\/b>: your knowledge of how Excel VBA works. I&rsquo;d check what you know about events (&ldquo;Can you write code that runs every time the worksheet changes?&rdquo;), about user-defined functions (&ldquo;What is and isn&rsquo;t allowed in UDFs?&rdquo;), volatile functions (&ldquo;How can you ensure that your UDF is volatile?&rdquo;, &ldquo;Which built-in Excel functions are volatile?&rdquo;).\n<\/p>\n<p>\n<b>Five<\/b>: questions specific to whatever the job is about. If it&rsquo;s at a bank, I&rsquo;d want to see you do some basic financial calculations. If it&rsquo;s a database reporting job, see if you can work with ADO and basic SQL, or interop with Word, or creating charts in VBA, or whatever else is relevant.\n<\/p>\n<hr \/>\n<p>\nThis is quite a lot and might not all get covered in the first interview, but I would ideally want to go through all of this before deciding whether to hire you.\n<\/p>\n<p>\nPersonally I&rsquo;d prioritise the parts just as I&rsquo;ve listed them here, most important first. But I&rsquo;ve been to interviews where they do almost the opposite &ndash; I once got a 10-question multiple-choice test about some nitty-gritty stuff in Excel but they didn&rsquo;t care about what my code looked like. So you never know.\n<\/p>\n<p>\nThe reason I&rsquo;ve put &ldquo;knowledge of Excel&rdquo; above &ldquo;knowledge of Excel VBA&rdquo; is that in my opinion, the latter is more straightforward and easier to learn. It&rsquo;s just code, and it is reasonably well documented. It&rsquo;s harder to find people who are good at writing efficient Excel formulas. But often formulas can yield a far more efficient solution &ndash; faster by several orders of magnitude. If I have a choice between formula and code, I&rsquo;d almost always choose the formula.\n<\/p>\n<p>\nJohn, I hope you find this helpful, and good luck with your interview!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I received a comment on one of my older posts about interviewing for an Excel VBA job, asking about possible interview questions. I&rsquo;ve been on both sides of the interview table, and I enjoy interviewing, and I&rsquo;ve thought about this quite a lot. So I thought I&rsquo;d write a more thorough reply, and make it [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,13],"tags":[],"class_list":["post-243","post","type-post","status-publish","format-standard","hentry","category-geeky_things","category-career"],"_links":{"self":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/posts\/243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/comments?post=243"}],"version-history":[{"count":0,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/posts\/243\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/media?parent=243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/categories?post=243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/tags?post=243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}