A VLAN is an Ethernet level concept, a subnet is an IP level concept.

A VLAN splits an Ethernet network into multiple logically seperate Ethernet networks.

A subnet defines which hosts a host will try to communicate with directly verses which hosts will need to go via a router. It also defines "network" and "broadcast" addresses.

It is common practice to have a 1:1 mapping between subnets and VLANs but it is perfectly possible to have multiple subnets on the same VLAN. Equally it is possible to use proxy arp to split a subnet between multiple VLANs or even have two VLANs using the same IP subnet for different purposes.