In my preferred terminology, a statistical ensemble consists of the set of all possible microstates of the system and an associated probability distribution over that set. A macrostate is a collection of microstates which is defined by specific values of macroscopic variables (energy, temperature, etc) or, in a looser sense, by some kind of macroscopic condition that individual microstates may or may not satisfy.
For example, suppose we have a gas confined to a container with a fixed volume of $V = 1\,\text{L}$, a temperature of $T = 300$ K, and $N = 1000$ particles. This would correspond to a specific macrostate of the gas. However, this is also an example of an $NVT$ ensemble, isn't it?
The $NVT$ (or canonical) ensemble assigns to each microstate $x$ the probability
$$\rho_{NVT}(x) = e^{-E[x]/kT}/ Z_{NVT} \qquad Z_{NVT} = \sum_x e^{-E[x]/kT}$$
where $E[x]$ is the total energy of the microstate $x$ and $Z_{NVT}$ is the canonical partition function. It is convenient to imagine the particles' position and momentum variables to be discretized for ease of calculation, but one can work with continuous variables as well - it simply introduces technical complications without altering the spirit of the process.
We might ask for the probability that the system has some particular value (or range, in the continuous case) for the total energy, pressure, or chemical potential - all of which generally differ from microstate to microstate. We could ask for the probability that the particles in the gas all occupy the upper half of their container. These conditions would all correspond to different macrostates in the same ensemble, which could be assigned probabilities via the probability distribution given above.