Yes. It's all a waste of time. Plus, your code just will work for one of these values, if more than one is there. Just put the Replace calls in a block. Get rid of the loop.
TextBox2.Text = Replace(TextBox2.Text, "kb", "kilobyte")
TextBox2.Text = Replace(TextBox2.Text, "mb", "megabyte")
TextBox2.Text = Replace(TextBox2.Text, "gb", "gigabyte")
TextBox2.Text = Replace(TextBox2.Text, "tb", "terabyte")
That's all you need. Also, any VB method that has no dot in it ( so InStr, instead of TextBox2.Text.Contains ), NEVER use. That's stuff left in because VB6 users were presumed to be too stupid to learn .NET.