[[20180510105623]] 『VBA 条件どおりに削除してくれない。』(らくしゅん) ページの最後に飛ぶ

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

 

『VBA 条件どおりに削除してくれない。』(らくしゅん)

 VBA初心者です。

 数字と会社名が入っているシートで、指定した数より小さい数字の会社名は
列ごと削除していく ということがしたいのですが、
例えば 指定した数字(k)が15だったとした時、10〜14は削除されますが、
一桁の1〜9は削除してくれません。(正しくは1〜14を削除してほしい)

また、指定した数字(K)が5になると、1〜4、と10以上も削除してしまい、残るのは6〜9までになってしまいます。(正しくは1〜5を削除してほしい)

試しにKの部分を15や5に変更して実行してみると正常に動作するので、kの変数に原因があるのでしょうか? 
色々と試してみましたが、どうしても上手くいきませんので、教えていただきたく、投稿しました。よろしくお願いいたします。

  Dim gyo As Integer

   Dim sita1 As Integer
   Dim k As String

   k = 売上台帳.ComboBox2.text

   sita = ActiveCell.Address()
   sita1 = Range("sita").Row

   For gyo = sita1 To 2 Step -1

      If k > Cells(gyo, 15) Then
       Rows(gyo & ":" & gyo).Select
       Selection.Delete shift:=xlUp
      End If

   Next gyo

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


それは、kに代入されるのが数値ではなく、数字だから。

15列目に入力されているのが数値ならば、k はString型ではなく、Long型にすれば良いです。 15列目が数字と会社名がくっついた文字列ならば、前ゼロを付けて数字部分の桁数を合わせるとか、比較の際に数字だけ抜き出して数値にして大小比較しましょう。
(???) 2018/05/10(木) 12:50


 直接的な回答は???さんに出していただいたので・・

 名前の定義でもしてないと、そもそもエラー起こりませんか?
 せめてこんな感じではないでしょうか。

 Sub TEST()
    Dim gyo As Integer
    Dim sita As Integer
    Dim k As Long
    k = 売上台帳.ComboBox2.Text
    sita = ActiveCell.Row
    For gyo = sita To 2 Step -1
        If k > Cells(gyo, 15).Value Then
            Rows(gyo).Delete
        End If
    Next gyo
 End Sub
(ろっくん) 2018/05/10(木) 12:58

???様 ろっくん様
ありがとうございました。
やってみましたら、できました!!
そういうことだったのですね(^^ゞ
勉強になりました。
(らくしゅん) 2018/05/10(木) 13:01

コメント返信:

[ 一覧(最新更新順) ]


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