こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAについて質問です。初心者です。

エクセルVBAについて質問です。初心者です。

ユーザーフォームにリストボックスとコマンドボタンを1つずつ配置しています。

 A列 B列
りんご 1
みかん 2 (りんご、みかん、1、2を太い罫線で四角に囲んでいます)
  
リストボックスには「りんご」と「みかん」が入っていて、りんごを選びコマンドボタンを押すと、「りんご」と「1」のセルが消去され、上方向にセルをずらすようにしています。
「みかん」を選びコマンドボタンを押すと「みかん」と「2」のセルが消えるのですが、そのとき「みかん」と「2」のセルの下段に引いている罫線まで消えてしまうのです。これを阻止する方法を教えていただけないでしょうか。

以下はコードです。

Private Sub CommandButton1_Click()

Range("A1").Offset(ListBox1.ListIndex).Delete Shift:=xlUp
Range("A1").Offset(ListBox1.ListIndex, 1).Delete Shift:=xlUp

Unload UserForm1

End Sub

おそらくこれに

「もし消去対象のセルが最終行のセルであれば

With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With

これを行いなさい」という感じのコードを作ればいいと思うのですが、『もし消去対象のセルが最終行のセルであれば』の部分がうまく作れません…。

なおA列、B列の文字・値はどんどん増えていく可能性があるので最終行を使っています。

よろしくお願いします。

投稿日時 - 2010-02-23 23:41:51

QNo.5701436

暇なときに回答ください

質問者が選んだベストアンサー

こんな感じで

Private Sub CommandButton1_Click()

If Cells(Rows.Count, 1).End(xlUp).Row = 1 Then
Range("A1").Offset(ListBox1.ListIndex).ClearContents
Range("A1").Offset(ListBox1.ListIndex, 1).ClearContents
Else
Range("A1").Offset(ListBox1.ListIndex).Delete Shift:=xlUp
Range("A1").Offset(ListBox1.ListIndex, 1).Delete Shift:=xlUp
End If
Unload UserForm1

End Sub

参考まで

投稿日時 - 2010-02-24 01:20:33

補足

丁寧な回答をいつもありがとうございますm(__)m

「ClearContents」を使うとセルに書かれている文字はなくなりますが、罫線等は残ったままになってしまいます。「みかん」「2」と書かれているセルに色も塗ってあるので、最終行を消すコードはやはり「Delete Shift:=xlUp」でないとマズイと思います…。
セルを消去したとき、それが最終行であれば最終行の上段に罫線を、または最終行-1の下段に罫線を引くというようにしたいのですが…。もうちょっとで出来そうなのですが、出来ません…。

投稿日時 - 2010-02-24 13:44:05

お礼

自分でああでもない、こうでもないといろいろコードをいじってたら出来ました!出来たとき思わずうなり声が上がりました!
いろいろお手数おかけしましたm(__)m

投稿日時 - 2010-02-24 23:23:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問