Michael does a great job of answering this question. Software needs hardware to run on.
But I also think it's worth pointing out there are many definitions of hardware engineering.
- Integrated Circuit (basically a chip on a PCB such as CSR, ARM, Intel, Microchip)
- Integration of IC's onto a PCB assembly (sound cards, computer mouse, most consumer electronics)
- Integration of PCB's into a system (computers, networks,
- Plastic, metal, PCBs and any other touchable components - while I think this is a bit misleading, some people consider anything you touch "hardware" and anything code related to be "software"
Most traditionally, hardware engineering is short for computer hardware engineering - the designing and construction of computer systems. Think of computer systems not so much as a personal computer, but in much more broad way. Computer systems are almost anything that requires a PCB (almost).
As products become more sophisticated, the demand for hardware and software engineers increases. Companies that previously relied on simple mechanical control systems (such as the turning dial on an old washing machine) now have computer control systems (buttons and electronic displays telling you just how many minutes are left in the cycle).
One last point is that hardware innovations drive software innovations, and software innovations drive hardware innovations. The hardware innovation of multi-touch screens and low power processors have enabled a new industry of touch devices with apps. The creation of app stores and apps for the hardware has increased the demand for touch devices with capability and hardware innovation - just look at the quality of the camera on a smartphone these days.
There will always be a need for great minds in the software and hardware space. Do a little exploring to see which (if either) suits you better.