You can expand the grid, but you would have to do it manually, and that would be time consuming and prone to error.
This is how I would approach what you need.
This is going to be long winded with a bunch of pictures, bear with me.
I am starting with a grid with missing squares. The dimensions of each square are 40 by 40. Measurement units are of no importance here although I am in a cartesian system. (Projected, not Geographic coordinates.)
I want to overlay a new, expanded grid that exactly matches the locations of the corners of the existing grid. Vector -- Research Tools -- Vector Grid
This will open up the Vector Grid tool.
To match the coordinates of the existing grid I am going to use the Ellipsis button ... on the far right hand side of the Grid Extent input box.
I will choose the "Use layer/canvas extent" dropdown choice.
From there, I will choose my existing grid layer.
This will populate the Grid Extents (xmin,xmax,ymin,ymax) values for me.
I want to expand the xmax value in the Grid Extents input box by 500 units.
So I simply add 500 to the value.
I also want to expand the grid to the south. So I highlight the ymin value.
Then change the ymin value to what I need. In this case I am subtracting 400 units. (Divisible by the original grid square dimension of 40)
I also need to expand the grid to the north, so I highlight and change the ymax value.
Now I need to input my grid square dimensions. They will still be 40 by 40
I click on run if the other settings are good. (I am creating polygons, not lines)
Here is the end result.
The new grid overlays directly.
You should be able to transfer the values from the existing grid to the new grid if you so desire.
This whole process within QGIS took about three minutes
I would make a copy of your original grid so you can play with the transferring of values to the new grid. Or you can transfer the land cover habitat values directly to the new grid, from the complete land cover habitat values layer.