ここから本文です

難解なので質問させていただきます。 リストボックス1とリストボックス2が選択さ...

gol********さん

2013/1/222:28:01

難解なので質問させていただきます。
リストボックス1とリストボックス2が選択されるとテキストボックスに
フォーカスをさせ入力しやすくさせて
リストボックス1がL4かL5であった場合にコマンドボタンを押す

最後にWorksheets("入出金帳簿")という別シートヘ移動させるには
どのようにすればよいでしょうか?
現在以下のような状態です。
去年助けて頂き大変感謝しております。

Private Sub ListBox1_Click()
If ListBox1.ListIndex <> -1 And ListBox2.ListIndex <> -1 Then TextBox1.SetFocus
End Sub
Private Sub ListBox2_Click()
If ListBox1.ListIndex <> -1 And ListBox2.ListIndex <> -1 Then TextBox1.SetFocus
End Sub

Private Sub TextBox1_Change()

End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And ListBox1.ListIndex <> -1 And ListBox1.ListIndex <> -1 And TextBox1.Value <> "" Then
Call CommandButton1_Click
TextBox1.SelStart = 0: TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub
Private Sub ListBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And ListBox1.ListIndex <> -1 And ListBox1.ListIndex <> -1 And TextBox1.Value <> "" Then
Call CommandButton1_Click
TextBox1.SelStart = 0: TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And ListBox1.ListIndex <> -1 And ListBox1.ListIndex <> -1 And TextBox1.Value <> "" Then
Call CommandButton1_Click
TextBox1.SelStart = 0: TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub
Private Sub UserForm_Initialize()

ListBox1.TabStop = False
ListBox2.TabStop = False
TextBox1.TabStop = True
CommandButton1.TabStop = False

Me.StartUpPosition = 0

Me.Left = 778
Me.Top = 179

'タイトルを設定
Me.Caption = "入力フォーム"
Label1.Caption = "日付"
Label2.Caption = "金額"
Label3.Caption = "科目"
CommandButton1.Caption = "入力"

'リストを設定
With Worksheets("入出金帳簿")
ListBox1.RowSource = .Name & "!" & .Range("L4:M29").Address
ListBox2.RowSource = .Name & "!" & .Range("K4:K34").Address
End With


End Sub


Private Sub CommandButton1_Click()
Dim tb As Control, flg As Boolean, Lrow As Long

flg = False

'入力や選択をチェック
For Each tb In Me.Controls

Select Case TypeName(tb)
Case "TextBox": flg = (tb.Value = "")
Case "ListBox": flg = (tb.ListIndex = -1)
End Select

If flg Then
MsgBox "入力または選択を見直して下さい。", vbExclamation, "入力不備"
Exit Sub
End If

Next

'入力

With Worksheets("入出金帳簿")
.Activate
Lrow = .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
'Application.Goto .Range("A" & LRow), True
.Range("A" & Lrow).Select
.Range("A" & Lrow).Value = ListBox2.List(ListBox2.ListIndex, 0)

.Range("B" & Lrow).Value = ListBox1.List(ListBox1.ListIndex, 0)
.Range(ListBox1.List(ListBox1.ListIndex, 1) & Lrow).Value = TextBox1.Value

End With

'フォームの金額を消してフォーカスを設定
TextBox1.Value = ""
TextBox1.SetFocus


End Sub
Private Sub CommandButton1_Enter()
TextBox1.SelStart = 0: TextBox1.SelLength = Len(TextBox1.Text)
End Sub

補足リストボックス2がL4かL5であった場合にコマンドボタンを押すと
の間違いでした。

この質問は、vcx********さんに回答をリクエストしました。

閲覧数:
183
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

vcx********さん

リクエストマッチ

2013/1/323:07:02

質問の仕方とか、全然お変わりないようである意味なつかしいです。

申し訳ありませんが、何をされたいのか【まったく】伝わりません。コードだけで推測出来る事もありますがそれにも限度があります。シートの状況がまるで解からないし。

補足で「リストボックス【2】が L4 か L5 であった場合に~」と訂正されていますが、ユーザーフォームのイニシャライズでは、

リストボックス【1】に 入出金帳簿!L4:M29 を設定
リストボックス【2】に 入出金帳簿!K4:K34 を設定

しています。

リストボックス【1】のL列は科目名、M列は転記先の列番号と勝手に推測しました。
リストボックス【2】はレコード数が31なので日付かなと勝手に推測しました。

もし推測どおりならリストボックス【2】の日付が、セルL4 か セルL5 の科目名と同じになる事があるのでしょうか?

「最後にWorksheets("入出金帳簿")という別シートヘ移動させる」との記述がありますが、「入出金帳簿」以外のシートがコード中どこにも出てこないので、元々どのシートでこの処理が行われているのかも謎です。コマンドボタン1では「入出金帳簿」に転記しているようにしか見えませんし、、、

質問した人からのコメント

2013/1/4 01:35:15

降参 ご返信ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる