このVBA、もうちょっとシンプルにできないですか?
自力でVBAを書いてみたのですが、長くなってしまいました。
もうちょっとシンプルにするアイディアがあればお願いします。
やりたいことは、
(1)ユーザーフォームのテキストボックス内が空欄だったら「無視」
(2)テキストボックスの中が空欄でなければ「書き込み」
以上のことをやりたいのですが、テキストボックスが6種類あるので単純に記述すると結構長くなってしまいました。
特に問題がなければ、その旨をお願いします。
If TextBox1 = "" Then
If TextBox2 = "" Then
If TextBox3 = "" Then
If TextBox4 = "" Then
If TextBox5 = "" Then
If TextBox6 = "" Then
MsgBox ("得点が入力されていません。")
ElseIf TextBox6 <> "" Then
Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value
End If
ElseIf TextBox5 <> "" Then
Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value
ElseIf TextBox6 <> "" Then
Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value
End If
End If
ElseIf TextBox4 <> "" Then
Sheets("総合(得点)").Cells(t + 7, u) = TextBox4.Value
If TextBox5 <> "" Then
Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value
If TextBox6 <> "" Then
Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value
End If
End If
End If
ElseIf TextBox3 <> "" Then
Sheets("総合(得点)").Cells(t + 6, u) = TextBox3.Value
If TextBox4 <> "" Then
Sheets("総合(得点)").Cells(t + 7, u) = TextBox4.Value
If TextBox5 <> "" Then
Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value
If TextBox6 <> "" Then
Sheets("総合(得点)").Cells(t + 9, u) = TextBox6.Value
End If
End If
End If
End If
ElseIf TextBox2 <> "" Then
Sheets("総合(得点)").Cells(t + 5, u) = TextBox2.Value
If TextBox3 <> "" Then
Sheets("総合(得点)").Cells(t + 6, u) = TextBox3.Value
If TextBox4 <> "" Then
Sheets("総合(得点)").Cells(t + 7, u) = TextBox4.Value
If TextBox5 <> "" Then
Sheets("総合(得点)").Cells(t + 8, u) = TextBox5.Value
・
・
・
こんな感じで規則的に記述しただけです。(文字数が多いので最後は省略しました)
段差がなくて見づらいですが、宜しくお願いします。
お礼
こんにちは。 回答ありがとうございます。 なるほど、「if int(X) = X」と行えば すっきりするんですね。 ありがとうございます。 勉強になります。 他にも変更・照会のフォームがたくさんあるので、 上記サブルーチンを参考にさせていただきます。 基本的な質問をしてもよいでしょうか? サブルーチンは「標準モジュール」に記入してもよいのでしょうか? すみません。やってみればわかりますよね。 努力してみます。 本当にありがとうございます。