[[20161219115705]] 『vba 書き込み時の0や空白を無視する方法』(俊) ページの最後に飛ぶ

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

 

『vba 書き込み時の0や空白を無視する方法』(俊)

Private Sub CommandButton3_Click()

  Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
DoEvents

i = TextBox2
Application.StatusBar = "処理中" & i & "/" & MaxCount
Worksheets("データ").Cells(i, 6).Value = Worksheets("入力").ComboBox18
Worksheets("データ").Cells(i, 7).Value = Worksheets("入力").ComboBox20
Worksheets("データ").Cells(i, 8).Value = Worksheets("入力").ComboBox21
Worksheets("データ").Cells(i, 9).Value = Worksheets("入力").ComboBox22
Worksheets("データ").Cells(i, 10).Value = Worksheets("入力").ComboBox1
Worksheets("データ").Cells(i, 11).Value = Worksheets("入力").ComboBox23
Worksheets("データ").Cells(i, 12).Value = Worksheets("入力").ComboBox2
Worksheets("データ").Cells(i, 13).Value = Worksheets("入力").ComboBox24
Worksheets("データ").Cells(i, 14).Value = Worksheets("入力").ComboBox3
Worksheets("データ").Cells(i, 16).Value = Worksheets("入力").ComboBox7
Worksheets("データ").Cells(i, 17).Value = Worksheets("入力").TextBox1
Worksheets("データ").Cells(i, 18).Value = Worksheets("入力").ComboBox8
Worksheets("データ").Cells(i, 19).Value = Worksheets("入力").ComboBox4
Worksheets("データ").Cells(i, 20).Value = Worksheets("入力").ComboBox5
Worksheets("データ").Cells(i, 21).Value = Worksheets("入力").ComboBox6
Worksheets("データ").Cells(i, 22).Value = Worksheets("入力").ComboBox9
Worksheets("データ").Cells(i, 23).Value = Worksheets("入力").ComboBox10
Worksheets("データ").Cells(i, 24).Value = Worksheets("入力").ComboBox11
Worksheets("データ").Cells(i, 25).Value = Worksheets("入力").ComboBox12
Worksheets("データ").Cells(i, 26).Value = Worksheets("入力").ComboBox19
Worksheets("データ").Cells(i, 27).Value = Worksheets("入力").ComboBox13
Worksheets("データ").Cells(i, 28).Value = Worksheets("入力").ComboBox14
Worksheets("データ").Cells(i, 29).Value = Worksheets("入力").TextBox12
Worksheets("データ").Cells(i, 30).Value = Worksheets("入力").ComboBox15
Worksheets("データ").Cells(i, 31).Value = Worksheets("入力").ComboBox16
Worksheets("データ").Cells(i, 32).Value = Worksheets("入力").ComboBox17
Worksheets("データ").Cells(i, 65).Value = Worksheets("入力").Range("n2")
Worksheets("データ").Cells(i, 74).Value = Worksheets("入力").Range("n3")
Worksheets("データ").Cells(i, 61).Value = Worksheets("入力").Range("t2")
Worksheets("データ").Cells(i, 62).Value = Worksheets("入力").Range("t3")
Worksheets("データ").Cells(i, 70).Value = Worksheets("入力").Range("n8")
Worksheets("データ").Cells(i, 71).Value = Worksheets("入力").Range("n9")
Worksheets("データ").Cells(i, 72).Value = Worksheets("入力").Range("n5")
Worksheets("データ").Cells(i, 73).Value = Worksheets("入力").Range("n6")
Worksheets("データ").Cells(i, 75).Value = Worksheets("入力").Range("t5")
Worksheets("データ").Cells(i, 80).Value = Worksheets("入力").Range("n13")
Worksheets("データ").Cells(i, 81).Value = Worksheets("入力").Range("n16")
Worksheets("データ").Cells(i, 82).Value = Worksheets("入力").Range("n14")
Worksheets("データ").Cells(i, 83).Value = Worksheets("入力").Range("n15")
Worksheets("データ").Cells(i, 84).Value = Worksheets("入力").Range("n17")
Worksheets("データ").Cells(i, 85).Value = Worksheets("入力").Range("t13")
Worksheets("データ").Cells(i, 86).Value = Worksheets("入力").Range("t14")
Worksheets("データ").Cells(i, 87).Value = Worksheets("入力").Range("t15")
Worksheets("データ").Cells(i, 88).Value = Worksheets("入力").Range("t16")
Worksheets("データ").Cells(i, 89).Value = Worksheets("入力").Range("t17")
Worksheets("データ").Cells(i, 94).Value = Worksheets("入力").Range("n18")
Worksheets("データ").Cells(i, 95).Value = Worksheets("入力").Range("n19")
Worksheets("データ").Cells(i, 98).Value = Worksheets("入力").Range("t18")
Worksheets("データ").Cells(i, 99).Value = Worksheets("入力").Range("t19")
Worksheets("データ").Cells(i, 118).Value = Worksheets("入力").Range("n22")
Worksheets("データ").Cells(i, 119).Value = Worksheets("入力").Range("n23")
Worksheets("データ").Cells(i, 120).Value = Worksheets("入力").Range("n24")
Worksheets("データ").Cells(i, 121).Value = Worksheets("入力").Range("n25")
Worksheets("データ").Cells(i, 122).Value = Worksheets("入力").Range("n26")
Worksheets("データ").Cells(i, 138).Value = Worksheets("入力").Range("t22")
Worksheets("データ").Cells(i, 139).Value = Worksheets("入力").Range("t23")
Worksheets("データ").Cells(i, 140).Value = Worksheets("入力").Range("t24")
Worksheets("データ").Cells(i, 141).Value = Worksheets("入力").Range("t25")
Worksheets("データ").Cells(i, 142).Value = Worksheets("入力").Range("t26")
Worksheets("データ").Cells(i, 147).Value = Worksheets("入力").Range("n27")
Worksheets("データ").Cells(i, 148).Value = Worksheets("入力").Range("n28")
Worksheets("データ").Cells(i, 156).Value = Worksheets("入力").Range("t27")
Worksheets("データ").Cells(i, 157).Value = Worksheets("入力").Range("t28")
Worksheets("データ").Cells(i, 169).Value = Worksheets("入力").Range("n31")
Worksheets("データ").Cells(i, 170).Value = Worksheets("入力").Range("n32")
Worksheets("データ").Cells(i, 171).Value = Worksheets("入力").Range("n33")
Worksheets("データ").Cells(i, 172).Value = Worksheets("入力").Range("n34")
Worksheets("データ").Cells(i, 173).Value = Worksheets("入力").Range("n35")
Worksheets("データ").Cells(i, 179).Value = Worksheets("入力").Range("t31")
Worksheets("データ").Cells(i, 180).Value = Worksheets("入力").Range("t32")
Worksheets("データ").Cells(i, 181).Value = Worksheets("入力").Range("t33")
Worksheets("データ").Cells(i, 182).Value = Worksheets("入力").Range("t34")
Worksheets("データ").Cells(i, 183).Value = Worksheets("入力").Range("t35")
Worksheets("データ").Cells(i, 188).Value = Worksheets("入力").Range("n36")
Worksheets("データ").Cells(i, 189).Value = Worksheets("入力").Range("n37")
Worksheets("データ").Cells(i, 197).Value = Worksheets("入力").Range("t36")
Worksheets("データ").Cells(i, 198).Value = Worksheets("入力").Range("t37")
Worksheets("データ").Cells(i, 206).Value = Worksheets("入力").Range("a30")
Worksheets("データ").Cells(i, 207).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 208).Value = Worksheets("入力").Range("c30")
Worksheets("データ").Cells(i, 209).Value = Worksheets("入力").Range("d30")
Worksheets("データ").Cells(i, 210).Value = Worksheets("入力").Range("e30")
Worksheets("データ").Cells(i, 211).Value = Worksheets("入力").Range("f30")
Worksheets("データ").Cells(i, 212).Value = Worksheets("入力").Range("g30")
Worksheets("データ").Cells(i, 213).Value = Worksheets("入力").Range("h30")
Worksheets("データ").Cells(i, 214).Value = Worksheets("入力").Range("i30")
Worksheets("データ").Cells(i, 215).Value = Worksheets("入力").Range("j30")
Worksheets("データ").Cells(i, 216).Value = Worksheets("入力").Range("B20")
Worksheets("データ").Cells(i, 217).Value = Worksheets("入力").Range("d20")
Worksheets("データ").Cells(i, 218).Value = Worksheets("入力").Range("a31")
Worksheets("データ").Cells(i, 219).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 220).Value = Worksheets("入力").Range("c31")
Worksheets("データ").Cells(i, 221).Value = Worksheets("入力").Range("d31")
Worksheets("データ").Cells(i, 222).Value = Worksheets("入力").Range("e31")
Worksheets("データ").Cells(i, 223).Value = Worksheets("入力").Range("f31")
Worksheets("データ").Cells(i, 224).Value = Worksheets("入力").Range("g31")
Worksheets("データ").Cells(i, 225).Value = Worksheets("入力").Range("h31")
Worksheets("データ").Cells(i, 226).Value = Worksheets("入力").Range("i31")
Worksheets("データ").Cells(i, 227).Value = Worksheets("入力").Range("j31")
Worksheets("データ").Cells(i, 228).Value = Worksheets("入力").Range("B21")
Worksheets("データ").Cells(i, 229).Value = Worksheets("入力").Range("d21")
Worksheets("データ").Cells(i, 230).Value = Worksheets("入力").Range("a32")
Worksheets("データ").Cells(i, 231).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 232).Value = Worksheets("入力").Range("c32")
Worksheets("データ").Cells(i, 233).Value = Worksheets("入力").Range("d32")
Worksheets("データ").Cells(i, 234).Value = Worksheets("入力").Range("e32")
Worksheets("データ").Cells(i, 235).Value = Worksheets("入力").Range("f32")
Worksheets("データ").Cells(i, 236).Value = Worksheets("入力").Range("g32")
Worksheets("データ").Cells(i, 237).Value = Worksheets("入力").Range("h32")
Worksheets("データ").Cells(i, 238).Value = Worksheets("入力").Range("i32")
Worksheets("データ").Cells(i, 239).Value = Worksheets("入力").Range("j32")
Worksheets("データ").Cells(i, 240).Value = Worksheets("入力").Range("B22")
Worksheets("データ").Cells(i, 241).Value = Worksheets("入力").Range("d22")
Worksheets("データ").Cells(i, 242).Value = Worksheets("入力").Range("a33")
Worksheets("データ").Cells(i, 243).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 244).Value = Worksheets("入力").Range("c33")
Worksheets("データ").Cells(i, 245).Value = Worksheets("入力").Range("d33")
Worksheets("データ").Cells(i, 246).Value = Worksheets("入力").Range("e33")
Worksheets("データ").Cells(i, 247).Value = Worksheets("入力").Range("f33")
Worksheets("データ").Cells(i, 248).Value = Worksheets("入力").Range("g33")
Worksheets("データ").Cells(i, 249).Value = Worksheets("入力").Range("h33")
Worksheets("データ").Cells(i, 250).Value = Worksheets("入力").Range("i33")
Worksheets("データ").Cells(i, 251).Value = Worksheets("入力").Range("j33")
Worksheets("データ").Cells(i, 252).Value = Worksheets("入力").Range("B23")
Worksheets("データ").Cells(i, 253).Value = Worksheets("入力").Range("d23")
Worksheets("データ").Cells(i, 254).Value = Worksheets("入力").Range("a34")
Worksheets("データ").Cells(i, 255).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 256).Value = Worksheets("入力").Range("c34")
Worksheets("データ").Cells(i, 257).Value = Worksheets("入力").Range("d34")
Worksheets("データ").Cells(i, 258).Value = Worksheets("入力").Range("e34")
Worksheets("データ").Cells(i, 259).Value = Worksheets("入力").Range("f34")
Worksheets("データ").Cells(i, 260).Value = Worksheets("入力").Range("g34")
Worksheets("データ").Cells(i, 261).Value = Worksheets("入力").Range("h34")
Worksheets("データ").Cells(i, 262).Value = Worksheets("入力").Range("i34")
Worksheets("データ").Cells(i, 263).Value = Worksheets("入力").Range("j34")
Worksheets("データ").Cells(i, 264).Value = Worksheets("入力").Range("B24")
Worksheets("データ").Cells(i, 265).Value = Worksheets("入力").Range("d24")
Worksheets("データ").Cells(i, 266).Value = Worksheets("入力").Range("a35")
Worksheets("データ").Cells(i, 267).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 268).Value = Worksheets("入力").Range("c35")
Worksheets("データ").Cells(i, 269).Value = Worksheets("入力").Range("d35")
Worksheets("データ").Cells(i, 270).Value = Worksheets("入力").Range("e35")
Worksheets("データ").Cells(i, 271).Value = Worksheets("入力").Range("f35")
Worksheets("データ").Cells(i, 272).Value = Worksheets("入力").Range("g35")
Worksheets("データ").Cells(i, 273).Value = Worksheets("入力").Range("h35")
Worksheets("データ").Cells(i, 274).Value = Worksheets("入力").Range("i35")
Worksheets("データ").Cells(i, 275).Value = Worksheets("入力").Range("j35")
Worksheets("データ").Cells(i, 276).Value = Worksheets("入力").Range("B25")
Worksheets("データ").Cells(i, 277).Value = Worksheets("入力").Range("d25")
Worksheets("データ").Cells(i, 278).Value = Worksheets("入力").Range("a36")
Worksheets("データ").Cells(i, 279).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 280).Value = Worksheets("入力").Range("c36")
Worksheets("データ").Cells(i, 281).Value = Worksheets("入力").Range("d36")
Worksheets("データ").Cells(i, 282).Value = Worksheets("入力").Range("e36")
Worksheets("データ").Cells(i, 283).Value = Worksheets("入力").Range("f36")
Worksheets("データ").Cells(i, 284).Value = Worksheets("入力").Range("g36")
Worksheets("データ").Cells(i, 285).Value = Worksheets("入力").Range("h36")
Worksheets("データ").Cells(i, 286).Value = Worksheets("入力").Range("i36")
Worksheets("データ").Cells(i, 287).Value = Worksheets("入力").Range("j36")
Worksheets("データ").Cells(i, 288).Value = Worksheets("入力").Range("B26")
Worksheets("データ").Cells(i, 289).Value = Worksheets("入力").Range("d26")
Worksheets("データ").Cells(i, 290).Value = Worksheets("入力").Range("a37")
Worksheets("データ").Cells(i, 291).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 292).Value = Worksheets("入力").Range("c37")
Worksheets("データ").Cells(i, 293).Value = Worksheets("入力").Range("d37")
Worksheets("データ").Cells(i, 294).Value = Worksheets("入力").Range("e37")
Worksheets("データ").Cells(i, 295).Value = Worksheets("入力").Range("f37")
Worksheets("データ").Cells(i, 296).Value = Worksheets("入力").Range("g37")
Worksheets("データ").Cells(i, 297).Value = Worksheets("入力").Range("h37")
Worksheets("データ").Cells(i, 298).Value = Worksheets("入力").Range("i37")
Worksheets("データ").Cells(i, 299).Value = Worksheets("入力").Range("j37")
Worksheets("データ").Cells(i, 300).Value = Worksheets("入力").Range("B27")
Worksheets("データ").Cells(i, 301).Value = Worksheets("入力").Range("d27")
Worksheets("データ").Cells(i, 302).Value = Worksheets("入力").Range("a38")
Worksheets("データ").Cells(i, 303).Value = Worksheets("入力").Range("b30")
Worksheets("データ").Cells(i, 304).Value = Worksheets("入力").Range("c38")
Worksheets("データ").Cells(i, 305).Value = Worksheets("入力").Range("d38")
Worksheets("データ").Cells(i, 306).Value = Worksheets("入力").Range("e38")
Worksheets("データ").Cells(i, 307).Value = Worksheets("入力").Range("f38")
Worksheets("データ").Cells(i, 308).Value = Worksheets("入力").Range("g38")
Worksheets("データ").Cells(i, 309).Value = Worksheets("入力").Range("h38")
Worksheets("データ").Cells(i, 310).Value = Worksheets("入力").Range("i38")
Worksheets("データ").Cells(i, 311).Value = Worksheets("入力").Range("j38")
Worksheets("データ").Cells(i, 312).Value = Worksheets("入力").Range("B28")
Worksheets("データ").Cells(i, 313).Value = Worksheets("入力").Range("d28")
Worksheets("データ").Cells(i, 314).Value = Worksheets("入力").Range("g23")
Worksheets("データ").Cells(i, 315).Value = Worksheets("入力").Range("g24")
Worksheets("データ").Cells(i, 316).Value = Worksheets("入力").Range("aa2")
Application.StatusBar = False
Application.ScreenUpdating = True

    Application.Calculation = xlCalculationAutomatic
Worksheets("データ").Cells(i, 34).Value = Worksheets("入力").Range
("i43")
End Sub
とあり、データに入力する数があるものの0や空白がほとんどであり、実行時に0や空白を無視する方法はありませんでしょうか
よろしくお願いします

< 使用 Excel:Excel2016、使用 OS:unknown >


 コードの記述自体は、もう少し工夫できそうですけど、
 0 や 空白 でも転記すればいいのでは? 何か不都合がでるのでしょうか?

(β) 2016/12/19(月) 12:14


 テーマとは離れますが、かわったコードですね。

 操作者による CommandButton のクリックで、その時に TextBox2 にいれてある行番号の行に対して書き込みを行う。
 1行毎の処理なのに、わざわざ StatusBar に 今何行目だと表示する意味は?
 StatusBar に表示しなくても TextBox2 に 何行目かは 表示されていますよね。
 それに、表示は一瞬でしょうから操作者の目にもとまらないと思いますけど?

 かつ、1行の単発処理なのに なぜ、先頭のほうに DoEvents があるのですか?

(β) 2016/12/19(月) 12:27


不具合は応答なしになるためで
書き込みが多いので入力の必要のない0や空白を飛ばしたいのです。
StatusBarは止まる箇所があるか見るためです
 DoEvents はミスです
(俊) 2016/12/19(月) 12:59

ComboBoxコントロールなぞ使わずに、データの入力規則でコンボ選択できるようにするのが普通に思います。

空白や0ならば代入したくない、という事ならば、If文で判定してはどうでしょう?
ただし、前回は値があったけど、今回は値が無い、なんて場合、代入しないのだから、前回値のままになりますが、良いのでしょうか?

    Dim vw As Variant

    vw = Worksheets("入力").ComboBox18
    If vw <> 0 And vw <> "" Then
        Worksheets("データ").Cells(i, 6).Value = vw
    End If
(???) 2016/12/19(月) 13:15

 これぐらいの転記数ですから、「転記が多いので固まる」ということは、99.9% ありえないと思います。
 ましてや、ループ内の転記ではなく、操作者のクリック起動の1行こっきりの転記ですから。

 固まるとすれば、このコードではないところの問題、他の操作や処理でメモリーがパンパンになってしまっているとか。
 そういうことではないですか?

 もちろん、最初にコメントしたように、記述の改善というか工夫はできます。
 でも、それをやっても、微々たるものですから。

 現在の転記コード、右辺も左辺も シート.セル という参照になっています。
 この場合、セルへのアプローチが シートコレクションを見るところから始まりますので、不効率です。(微々たるものですが)
 また、この記述だと、煩雑で見たときに目が疲れませんか?

 このコードは 入力シートの シートモジュール に書かれていると想像します。
 であれば

    With Sheets("データ")

        .Cells(i, 6).Value = ComboBox18.Text

        '
        .Cells(i, 65).Value = Range("n2").Value
        '
    End With

 こんなように記述できます。見た目もすっきりしますが、効率が改善されます。
 また左辺は、プロパティ(.Value) を明示しているのに 右辺は オブジェクトになっていますね。
 右辺にも明示しましょう。わかりやすいですし。

 繰り返しになりますが、0 や 空白 の場合に転記スキップしても、問題の解決にはならないと思いますが、
 それでもスキップしたいなら

 それが数値項目なら

 If Val(ComboBox18.Text) <>0 Then .Cells(i, 6).Value = ComboBox18.Text

 それが文字列項目なら

 If ComboBox18.Text <>"" Then .Cells(i, 6).Value = ComboBox18.Text

 といったようにしてスキップされてはいかがですか。

(β) 2016/12/19(月) 14:56


 可能性の一つとして。

 データシートにWorksheet_Changeイベントプロシージャがあったりしないだろうか?
(ねむねむ) 2016/12/19(月) 15:07

 >>データシートにWorksheet_Changeイベントプロシージャ

 大いにありえますね。
 でも、それだったら、これは、質問以前のはなしですねぇ・・・・・

(β) 2016/12/19(月) 15:16


Worksheet_Changeイベントプロシージャではなくカメラでした
他の部分を疑ってなかったので
(β)さん(???)さん(ねむねむ)さんありがとうございました
With Sheets("データ")は勉強になりました
(俊) 2016/12/21(水) 09:09

コメント返信:

[ 一覧(最新更新順) ]


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