うちのカレーにはこれが入ってる!って食材ありますか?

EXCEL2003のVBAで簡単なformを作成していますが、初心者なのでお知恵をお貸しください。

マルチページのpage1にtextbox1と2、label1と2を設置しています。
で、ここに(page1)にコマンドボタンを設置してこれを押すとPAGE2のtextbox3と4、label3と4にコピーされますが、もしtextbox3と4、label3と4に既に入力されているなら、textbox5と6、label5と6へ入力しなさいというコードはどうしたらいいのでしょうか?

A 回答 (2件)

n-junです。



Label11~15・Label16~20が一定にTextBox1~と関連付けされていれば、

Private Sub CommandButton1_Click()
Dim i As Integer

For i = 11 To 25 Step 5 '25は修正して下さい
If Len(Me.Controls("Label" & i).Caption) = 0 Then
Me.Controls("Label" & i).Caption = TextBox1
Me.Controls("Label" & i + 1).Caption = TextBox2
Me.Controls("Label" & i + 2).Caption = Label6
Me.Controls("Label" & i + 3).Caption = Label7
Me.Controls("Label" & i + 4).Caption = Label9
Exit For
End If
Next

End Sub

未検証ですが、こんな感じではないかと。
    • good
    • 0

textbox3と4、label3と4には同時に代入され、且つtextbox3と4の値の有無で判断できるのなら



If Len(TextBox3.Text) * Len(TextBox4.Text) = 0 Then
' TextBox3・4への代入
' Label3・4への代入
Else
' TextBox5・6への代入
' Label5・6への代入
End If

textbox3と4のそれぞれの文字列の長さの積で判断してみる。
⇒ただしTextBox3 か TextBox4 のどちらかが空白である可能性があれば、

If Len(TextBox3.Text) = 0 Or Len(TextBox4.Text) = 0 Then
かな?

この回答への補足

早速の回答ありがとうございます。
Private Sub CommandButton6_Click()
If Len(Label11) = 0 Then
Label11 = TextBox1
Label12 = TextBox2
Label13 = Label6
Label14 = Label7
Label15 = Label9
Else
Label20 = TextBox1
Label19 = TextBox2
Label18 = Label6
Label17 = Label7
Label16 = Label9
End If
End Sub
という風にしてLABEL11が0文字ならLABEL11へ書き込み違うならLABEL20へで出来ました。が、これよりさらにLABEL20も0文字でないならLABEL25へ、それでも0文字でないなら・・・何段階も0文字までがあるまで繰り返すというのは可能なんでしょうか?
この条件で繰り返してみましたがエラーでした・・・

補足日時:2009/06/18 07:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報