Обычный способ сделать это - переместить все 3 деления влево и убрать границу, потому что в некоторых браузерах она сломается из-за этого 1 пикселя.
Если вам действительно нужна граница, тогдасделайте это:
<style type="text/css">
#div1, #div3 { float:left; width:30%; }
#div2 { float:left; width:40%; }
#subdiv1, #subdiv2, #subdiv3 { border:solid 1px #000; }
#Button1, #Button2, #Button3 { width:100% }
</style>
<div id="div1">
<div id="subdiv1">
<button id="Button1">Button 1</button>
</div>
</div>
<div id="div2">
<div id="subdiv2">
<button id="Button2">Button 2</button>
</div>
</div>
<div id="div3">
<div id="subdiv3">
<button id="Button3">Button 3</button>
</div>
</div>
Edit1: jsfiddle для тестирования -> измените ширину оболочки, чтобы увидеть, масштабируется ли она до любой ширины без разрыва ...