[[20141031141855]] 『ユーザーフォームのチェックボックスについて』(pinky) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームのチェックボックスについて』(pinky)

教えて下さい。

ユーザーフォームに複数のリストボックスやチェックボックスがあります。
指定のシートのセルに、下方向に順に入力するように設定しています。

しかし、リスト等は順に下方向に反映しますが
チェックボックスのデータは、現在With Range("B7")にしている為、
チェックしたデータは"B8"に反映され続けます。
これを、"B8"から順に下方向に反映するようにしたいです。

A7:G28の表で、A7:G7はタイトルです。

ロジックがおかしいというのは何となくわかるのですが
具体的にどう直せば良いのかわかりません・・・。
宜しくお願いします。

************

Private Sub 登録_Click()
    Dim rowno As Long
    rowno = get_row

    With Worksheets("報告書")
        .Cells(rowno, 1) = 月日.Text
        .Cells(rowno, 3) = 場所.Text
        .Cells(rowno, 4) = 顧客名.Text
        .Cells(rowno, 5) = 項目1.Text
        .Cells(rowno, 6) = 項目2.Text
        .Cells(rowno, 7) = その他.List

    End With
    With UserForm1
        顧客名.Text = ""
        場所.Text = ""
        項目1.Text = ""
        項目2.Text = ""
        その他.Text = ""

    With Range("B7")
       For Each Ob In Me.Controls
       If TypeName(Ob) = "CheckBox" Then
       If Ob = True Then
           co = co & Ob.Caption
       End If
       End If
    Next
       .Offset(1, 0) = co
    End With
        End With

    Unload Me

 End Sub

************

 Function get_row() As Long
    Dim i As Long
    i = 7
    Do
        i = i + 1

    Loop While Cells(i, 1) <> "" Or 1 < Cells(i, 7).End(xlToLeft).Column
    get_row = i
 End Function

************

Private Sub CheckBox11_Click()
Call Check
End Sub

*省略

End Sub

Private Sub CheckBox26_Click()
Call Check
End Sub

************

Sub Check()
Dim Chk As String

If Me.CheckBox1.Value = True Then _

      Chk = Me.CheckBox31.Caption & "、"

省略

If Me.CheckBox26.Value = True Then _

      Chk = Chk & Me.CheckBox26.Caption & "、"

End Sub

************

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 表のイメージがよくつかめていないのですが、
 取得したrownoの下に行けばいいんですかね?
 With Range("B7") → With Range("B" & rowno)
 ということですか_?

(ぽち) 2014/10/31(金) 15:35


 追加・・
 整理しましたがこんな感じでしょうか。
 Function get_row は不要です。

  Private Sub 登録_Click()

    Dim co As String
    Dim Rng As Range
    Dim Ob As Object

    Set Rng = Sheets("報告書").Cells(Sheets("報告書").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
    With Rng
        .Value = 月日.Text
        .Offset(, 2) = 場所.Text
        .Offset(, 3) = 顧客名.Text
        .Offset(, 4) = 項目1.Text
        .Offset(, 5) = 項目2.Text
        .Offset(, 6) = その他.List
        Set Rng = .Offset(1, 0)
    End With

    顧客名.Text = ""
    場所.Text = ""
    項目1.Text = ""
    項目2.Text = ""
    その他.Text = ""

    For Each Ob In Me.Controls
        If TypeName(Ob) = "CheckBox" Then
            If Ob = True Then
                co = co & Ob.Caption
            End If
        End If
    Next
    Rng.Value = co

    Unload Me

  End Sub
(ぽち) 2014/10/31(金) 15:56

ぽち様

ご親切にありがとうございました。

アドバイス頂いたコードで思い通りにする事ができました。

本当にありがとうございました。

(pinky) 2014/10/31(金) 17:10


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.