저항 여러 개를 직렬·병렬로 연결했을 때의 합성저항은 공식이 단순합니다. 직렬이면 모두 더하고, 병렬이면 각 저항의 역수를 더한 다음 다시 역수를 취하죠. 계산기로 두드려도 되지만 값이 여러 개면 번거로워서 작은 폼으로 만들어 봤습니다. 반복문 없이 LINQ 로 몇 줄 안에 끝나는 게 요점입니다.
LINQ(Language-Integrated Query)는 배열·리스트·DB 결과 같은 데이터 묶음을 같은 문법으로 걸러 내고 바꾸고 집계할 수 있게 해 주는 VB.NET 의 기능입니다. 여기서는 Sum 과 Select 두 가지만 씁니다.
폼 구성

textBox1 ~ textBox4 에 저항값을 넣고, textBox5 에 결과가 나옵니다. 버튼은 cmd_1(직렬), cmd_2(병렬) 두 개이고, 두 버튼의 클릭 이벤트를 cmd_x_Click 하나에 연결했습니다.
Private Sub cmd_x_Click(sender As Object, e As EventArgs) Handles cmd_2.Click, cmd_1.Click
Dim stringList = {textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text}.ToList
Dim intList = stringList.ConvertAll(Function(str) Int32.Parse(Val(str)))
textBox5.Text = intList.Sum()
If sender.Name.ToString.Split("_").Last = 2 Then textBox5.Text = 1 / intList.Select(Function(i) 1 / i).Sum
End Sub
줄마다 하는 일
'// stringList 라는 변수에 4개의 텍스트 박스 값을 담습니다.
Dim stringList = {textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text}.ToList
'// 4개의 담은 값을 integer 형식으로 변환합니다.
Dim intList = stringList.ConvertAll(Function(str) Int32.Parse(Val(str)))
'// 변환한 값을 더해서 출력합니다.
textBox5.Text = intList.Sum()
'// 눌린 버튼이 병렬이라면 1 을 각 값으로 나눈 값을 모두 더하고, 1 을 그 합으로 나눈 값을 출력합니다.
If sender.Name.ToString.Split("_").Last = 2 Then textBox5.Text = 1 / intList.Select(Function(i) 1 / i).Sum
텍스트박스 네 개의 값을 배열로 묶어 리스트로 만들고, ConvertAll 로 각 값을 정수로 바꿉니다. Val 을 거치기 때문에 빈 칸은 0 이 됩니다. 일단 Sum 으로 모두 더해 결과 칸에 넣는데, 이게 직렬 합성저항입니다.
어느 버튼이 눌렸는지는 버튼 이름으로 구분합니다. sender.Name 을 _ 로 나눈 마지막 조각이 2 이면 병렬 버튼이니, Select 로 각 값을 역수(1 / i)로 바꿔 더하고 그 합의 역수를 결과로 덮어씁니다. 버튼마다 이벤트를 따로 만들지 않고 이름 규칙으로 나눈 거라, 나중에 계산 방식 버튼을 늘릴 때도 이벤트 하나에서 처리할 수 있습니다.
실행 결과

직렬은 입력한 값이 그대로 더해집니다. 빈 칸은 0 이니 두세 개만 넣어도 계산됩니다.

병렬은 한 칸이라도 비어 있으면 0 이 나옵니다. 빈 칸이 0 이 되고, 1 / 0 은 VB.NET 의 / 연산(실수 나눗셈)에서 오류 대신 무한대가 됩니다. 합이 무한대가 되니 최종값 1 / 무한대 가 0 이 되는 거죠. 저항 0Ω 이 병렬로 하나 끼어 있으면 실제로도 합성저항이 0 이 되니 물리적으로도 틀린 답은 아닙니다.

네 칸을 모두 채우면 병렬 합성저항이 제대로 계산됩니다.
고쳐 쓸 만한 곳
Int32.Parse(Val(str)) 는 정수만 받습니다. 4.7kΩ 처럼 소수를 입력하면 Val 이 4.7 을 돌려주고, 이걸 다시 정수로 파싱하다 FormatException 이 납니다. 소수 저항값까지 다루려면 ConvertAll(Function(str) Val(str)) 로 Double 리스트를 만드는 편이 낫습니다.
병렬에서 빈 칸을 계산에서 빼고 싶다면 intList.Where(Function(i) i > 0) 로 0 을 걸러 낸 다음 역수를 더하면 됩니다. 그러면 두세 개만 입력해도 병렬 값이 나옵니다.
sender.Name 은 Object 형식에서 속성을 바로 부르는 지연 바인딩이라 Option Strict Off 에서만 컴파일됩니다. Option Strict On 프로젝트라면 CType(sender, Button).Name 으로 바꾸고, 결과를 텍스트박스에 넣을 때도 .ToString() 을 붙여야 합니다.