Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5268 / 13644 ツリー ←次へ | 前へ→

【51778】I列で空白になっているセルがある行は削除したい ktm1216 07/10/4(木) 12:54 質問[未読]
【51780】Re:I列で空白になっているセルがある行は削... Jaka 07/10/4(木) 13:29 発言[未読]
【51783】Re:I列で空白になっているセルがある行は削... ktm1216 07/10/4(木) 14:26 お礼[未読]
【51792】Re:I列で空白になっているセルがある行は削... ktm1216 07/10/4(木) 19:19 質問[未読]
【51804】Re:I列で空白になっているセルがある行は削... Jaka 07/10/5(金) 10:27 発言[未読]
【51808】Re:I列で空白になっているセルがある行は削... ktm1216 07/10/5(金) 12:19 回答[未読]
【51809】Re:I列で空白になっているセルがある行は削... Jaka 07/10/5(金) 12:50 発言[未読]
【51815】Re:I列で空白になっているセルがある行は削... Jaka 07/10/5(金) 16:28 発言[未読]
【51829】Re:I列で空白になっているセルがある行は削... tarou 07/10/6(土) 17:06 発言[未読]
【51835】Re:I列で空白になっているセルがある行は削... ichinose 07/10/6(土) 20:00 発言[未読]
【51839】Re:I列で空白になっているセルがある行は削... ktm1216 07/10/6(土) 21:55 お礼[未読]
【51837】Re:I列で空白になっているセルがある行は削... ktm1216 07/10/6(土) 21:50 お礼[未読]
【51840】Re:I列で空白になっているセルがある行は削... ktm1216 07/10/6(土) 21:58 お礼[未読]

【51778】I列で空白になっているセルがある行は削...
質問  ktm1216  - 07/10/4(木) 12:54 -

引用なし
パスワード
   すいません、最近VBAを組み始めたばかりで全く素人なのですが、よろしくお願いいたします。

私のしたいことはタイトルの通り
・I列に空白セルがあれば、その行だけを削除する

です。

私が組んだマクロは

Sub 行削除()
  Rows("I5:I104=""""").Delete.xlshiftup
Sub end

です。
全く構造を理解していない組み方かもしれませんが、非常に悩んでいます。
どなたかよきアドバイスをお願いいたしますm(_ _)m

【51780】Re:I列で空白になっているセルがある行は...
発言  Jaka  - 07/10/4(木) 13:29 -

引用なし
パスワード
   とりあえず、

方法1。
I列を選択して、
編集 → ジャンプ → セル選択 → 空白セルにチェックして、OK。
選択されているセルを右クリック → 削除 → 行全体
これをマクロ記録。
(空白セルのかたまりが飛び飛びに8192個所以上になると、使えません。)

方法2
並び替えてもいいのなら、
I列をキーにして並び替えれば空白セルは下に行きます。

その他
行の削除で検索してみました。
参考になるものがあると思います。
HTTP://www.vbalab.net/vbaqa/c-board.cgi?word=%8Ds%82%CC%8D%ED%8F%9C&way=0&target=all&view=0&id=excel&cmd=src&x=33&y=15

【51783】Re:I列で空白になっているセルがある行は...
お礼  ktm1216  - 07/10/4(木) 14:26 -

引用なし
パスワード
   >Jakaさん

さっそくの書き込みありがとうございます!!
なるほど、そういうやり方でも出来るんですね!

マクロのプログラミング言語を記述しかわからなくて。。。

マクロの記録というのはどうやって使うのか??
って思ってました。

わざわざ行削除のアドレスも貼り付けてくださったみたいで
本当に助かります☆

参考になります!ありがとうございました^^/

【51792】Re:I列で空白になっているセルがある行は...
質問  ktm1216  - 07/10/4(木) 19:19 -

引用なし
パスワード
   >Jakaさん

先ほどはご返答ありがとうございました。
せっかくお教え頂いた情報ですが、残念ながら何がいけなかったのか、
マクロの記録では行は消えませんでした。

それで、お教え頂いた過去ログを元にいろいろ見てみると私のしたい
内容に近いものがあり、それを自分なりに加工して実行しました。
ですが、やはり消えず。。。
Sub 行削除()
  Range("I:I").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End sub

この構文なのですが、どこか間違ってますでしょうか??
何度も質問ばかりで申し訳ありません。(T T)
なにとぞよろしくお願い申し上げます。

【51804】Re:I列で空白になっているセルがある行は...
発言  Jaka  - 07/10/5(金) 10:27 -

引用なし
パスワード
   ▼ktm1216 さん:
>ですが、やはり消えず。。。
>Sub 行削除()
>  Range("I:I").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
>End sub
>
>この構文なのですが、どこか間違ってますでしょうか??
合ってます。
一応こちらでも実行してみましたが消えました。

たぶん勘違いされているかもしれないこと。
関数で
= ""
となっている物も空白と思われがちですが、空白ではないです。
これをコピーして値だけ貼り付けをした場合も、長さ0の文字が貼り付けられて
空白とはなりません。

【51808】Re:I列で空白になっているセルがある行は...
回答  ktm1216  - 07/10/5(金) 12:19 -

引用なし
パスワード
   >Jakaさん

再度ご返信ありがとうございます。
私の方でもなぜ消えないのかを検証していたところ、
おそらくIF関数で空白にしていたセルであったために、
その式のせいで消えなかったみたいです。。。

なので式中に値貼り付けをする式を入れたんですね。
それで値貼り付けまでは出来たのですが、それ以降が
実行されませんでした。

記述はこうです。
ちなみにタイトルではI列となっているのですが、
列の挿入をした関係で今はJ列が対象列です。

Sub 行削除()
  Range("J2:J104").Formula = "=IF(G2-H2=0,"""",G2-H2)"
  Columns("J:J").Select
  Selection.Copy
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  ActiveSheet.Paste
  Application.CutCopyMode = False
  Columns("J:J").Select
  Selection.SpecialCells(xlCellTypeBlanks).Select
  Selection.Delete Shift:=xlUp
End Sub

同じ内容を何度も質問してしまって本当ごめんなさい(T T)

【51809】Re:I列で空白になっているセルがある行は...
発言  Jaka  - 07/10/5(金) 12:50 -

引用なし
パスワード
   Sub 行削除()
  Range("J2:J104").Formula = "=IF(G2-H2=0,"""",G2-H2)"
  Columns("J:J").Select
  Selection.Copy
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  ActiveSheet.Paste
  Application.CutCopyMode = False
  With Columns("J:J")
     '↓データ → 区切り位置 そのまま完了 で、""を空白にする。(マクロ記録)
                  '↓Range("J1")のままだとなんなので、.Cells(1) に変更可。
    .TextToColumns Destination:=Range("J1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
  
    .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
  End With
End Sub

注)データ → 区切り位置 そのまま完了
文字の数字も数値に変換されます。
例、
00001 → 1

【51815】Re:I列で空白になっているセルがある行は...
発言  Jaka  - 07/10/5(金) 16:28 -

引用なし
パスワード
   これと同じようなものが過去ログにあるはずですが..。一応。ベタな物。

Dim i As Long
For i = Cells(Rows.Count, "J").End(xlUp).Row To 1 Step -1
  If Cells(i, "J").Value = "" Then
   Rows(i).Delete
  End If
Next

【51829】Re:I列で空白になっているセルがある行は...
発言  tarou  - 07/10/6(土) 17:06 -

引用なし
パスワード
   ▼Jaka さん:
同じようなものが過去ログにあるはずで…。
Dim R As Range, MyR As Range
Set MyR = Range("J1", Range("J" & Rows.Count).End(xlUp))
For Each R In MyR
  If R.Value = "" Then
   R.Rows.Delete
  End If
Next

【51835】Re:I列で空白になっているセルがある行は...
発言  ichinose  - 07/10/6(土) 20:00 -

引用なし
パスワード
   ▼tarou さん:
こんばんは。


>同じようなものが過去ログにあるはずで…。
コードはJakaさんのコードと似ていますが、


↓は、正常に作動しない場合がありますよ!!

sub main()
>Dim R As Range, MyR As Range

Range("j:j").ClearContents
Range("j1:j10").Value = [{1; 2; 3; 4; ""; ""; ""; ""; 9; 0}]
MsgBox "sample ok"

>Set MyR = Range("J1", Range("J" & Rows.Count).End(xlUp))
>For Each R In MyR
>  If R.Value = "" Then
>   R.Rows.Delete
>  End If
>Next

end sub

上記のコードで空白行が全て削除されないことを確認してください。

【51837】Re:I列で空白になっているセルがある行は...
お礼  ktm1216  - 07/10/6(土) 21:50 -

引用なし
パスワード
   >tarouさん

はじめまして。なるほど、そういう記述もあるのですね☆
こちらもトライしてみます!
お教えいただいてありがとうございました^^/

【51839】Re:I列で空白になっているセルがある行は...
お礼  ktm1216  - 07/10/6(土) 21:55 -

引用なし
パスワード
   >ichinoseさん

はじめまして。正しい記述をお知らせ頂いてありがとうございます☆
参考になります!!
さっそく試してみたいと思います^^/
ありがとうございました!!

【51840】Re:I列で空白になっているセルがある行は...
お礼  ktm1216  - 07/10/6(土) 21:58 -

引用なし
パスワード
   >Jakaさん

度々お世話になっております。
毎回ご丁寧なご返信、本当にありがたいです(T T)

この記述でトライしてみまね^^

5268 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free