[[20100911185332]] 『チェックボックス』(タナ) ページの最後に飛ぶ

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

 

『チェックボックス』(タナ)
 いつもこちらで勉強させて頂いております。
 現在つまっている所がございますので教えて頂けないでしょうか。
 BOOK1のSheet1に製品発注の詳細が記載されているのですが
 それを発注書に転記したいです。
 ただBOOK1のSheet1には製品の情報が入っており、部品の発注先が違う為
 チェックボックスにチェックを入れたもの以外は転記しません。
 また、部品の色の展開があるのでCheckBox12〜15までにチェックを入れて
 入れた箇所により発注書の行欄を開けたいのですが…
 下記の様に組んでも何も反応致しません…ご教授願いたいです。

 Dim MyRow As Long, MyCol As Long
 Dim i As Long
 Dim c As Long
 Dim e As Long
 Dim d As Long

 If CheckBox12.Value = True Then
 i = "0"
 End If

 If CheckBox13.Value = True Then
 i = "1"
 End If

 If CheckBox14.Value = True Then
 i = "2"
 End If

 If CheckBox14.Value = True Then
 i = "3"
 End If

 With Worksheets("sheet1")'これは発注書の方のSheet1です。OPENメゾットは手前で記載しておりますので省略しております

 d = .Range("D65536").End(xlUp).Row + 1 + i
 For e = 1 To 11
 If CheckBox & e = Value Then
 For c = 18 To 28
 .Cells(d, 4).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 2).Value
 .Cells(d, 7).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 4).Value
 .Cells(d, 11).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 6).Value
 .Cells(d, 13).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 10).Value
 .Cells(d, 14).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 18).Value
 Next c

 End If

 Next e

 End With

 何処がおかしいのでしょうか??
 Excel2003 OS:XP

 i は整数型ですから、
 i = "0"
 ではなく
 i = 0
 ですね。

 If CheckBox & e = Value Then
 は意味不明です。

 それからインデントをきちんとつけましょう

 本論と関係ありませんが、メゾット ではなくメソッド(Method)です。
 まだまだ問題はありそうですが、まずは構文的なエラーがなくなる状態にして
 はどうでしょうか。

 On Error Resume Next を使っているとしたら、デバッグの段階では邪魔です。
 (Mook)

 Mook様 
 ありがとうございます。
 チェックボックスのループ処理は出来ないのでしょうか
 If CheckBox & e = Value Thenは1から11までのチェックボックスの処理をしたく思ったので…トホホ
 >メゾット ではなくメソッド(Method)です。
 ご指摘ありがとうございます。恥をかき続ける所でした…
 iは整数型と言う事はi=0  i=1 ...として行けば良いと言う事でしょうか??
 またまた質問ばかりで申し訳ございません。


 やりたいことは何となく分かりました。
 チェックボックスにアクセスするには、単純な文字列ではできません。
 For chNum=11 To 15
    If Worksheets("チェックボックスのあるシート名").OLEObjects("CheckBox" & chNum).Object.Value = True Then
        For ...
           ...
        Netx
    End If
 Next
 のようにする必要があります。

 また、
 For c = 18 To 28
     .Cells(d, 4).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 2).Value
     .Cells(d, 7).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 4).Value
     .Cells(d, 11).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 6).Value
     .Cells(d, 13).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 10).Value
     .Cells(d, 14).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(c, 18).Value
 Next c
 は、毎回同じところに書いているので、ループの意味がありません。

 まずは、コピー元のデータとチェックボックスの関係をもう少し、説明されては
 どうでしょうか
 (Mook)

Mook様
ご連絡遅くなりました申し訳ございません。
チェックボックスの件ありがとうございます。
チェックボックスはユーザーフォーム上にあるのですがその場合
If Worksheets("チェックボックスのあるシート名").OLEObjects("CheckBox" & chNum).Object.Value = True Then
workseetsの部分はどの様になるのでしょうか?
Userform2としてもダメでした…。

>毎回同じところに書いているので、ループの意味がありません。
確かに…チェックボックスにチェックが入っている行の各列(2、4、6、10、18)を
発注書に転記したいのですがその場合は

    If Worksheets("チェックボックスのあるシート名").OLEObjects("CheckBox" & chNum).Object.Value = True Then
 .Cells(d, 4).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(ChNum+17, 2).Value
     .Cells(d, 7).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(ChNum+17, 4).Value
     .Cells(d, 11).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(ChNum+17, 6).Value
     .Cells(d, 13).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(ChNum+17, 10).Value
     .Cells(d, 14).Value = Workbooks("生産システム-1").Sheets("製品フォーム").Cells(ChNum+17, 18).Value

        End If
 Next

この様な形になりますか??
何度もスミマセン…


 もうすでに見ていないかもしれませんが、下記のあたりが参考にならないでしょうか。

https://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=VBA+Checkbox+Controls&perpage=10&attr=&order=&clip=-1&navi=0

 この手のことはまず間違いなく前例があるので、検索キーワードさえうまく選べ
 ば例がたくさん見つかると思います。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


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