Excel VBA質問箱 IV

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

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


11890 / 13645 ツリー ←次へ | 前へ→

【13301】行全体を削除する方法 こっこ 04/5/1(土) 11:59 質問[未読]
【13302】Re:行全体を削除する方法 かみちゃん 04/5/1(土) 12:43 発言[未読]
【13304】Re:行全体を削除する方法 こっこ 04/5/1(土) 13:13 質問[未読]
【13306】Re:行全体を削除する方法 Asaki 04/5/1(土) 13:29 回答[未読]
【13307】Re:行全体を削除する方法 こっこ 04/5/1(土) 13:47 お礼[未読]
【13308】Re:行全体を削除する方法 Asaki 04/5/1(土) 13:59 発言[未読]
【13310】Re:行全体を削除する方法 こっこ 04/5/1(土) 14:36 質問[未読]
【13311】Re:行全体を削除する方法 こっこ 04/5/1(土) 14:42 発言[未読]
【13313】Re:行全体を削除する方法 Asaki 04/5/1(土) 14:49 回答[未読]
【13312】Re:行全体を削除する方法 Asaki 04/5/1(土) 14:47 回答[未読]
【13315】Re:行全体を削除する方法 こっこ 04/5/1(土) 14:56 質問[未読]
【13316】Re:行全体を削除する方法 Asaki 04/5/1(土) 15:07 回答[未読]
【13319】Re:行全体を削除する方法 こっこ 04/5/1(土) 15:54 質問[未読]
【13328】Re:行全体を削除する方法 Asaki 04/5/1(土) 19:50 回答[未読]
【13482】Re:行全体を削除する方法 こっこ 04/5/6(木) 14:29 質問[未読]
【13488】Re:行全体を削除する方法 Asaki 04/5/6(木) 15:25 回答[未読]
【13490】Re:行全体を削除する方法 こっこ 04/5/6(木) 15:54 お礼[未読]

【13301】行全体を削除する方法
質問  こっこ  - 04/5/1(土) 11:59 -

引用なし
パスワード
   コンボボックスで選択した行全体を削除する方法を教えて下さい。
今のところ、『Delete (xlShiftUp)』を使って考えている(本を見ながら・・・)
のですが、どうもわかりません。
宜しくお願い致します。

【13302】Re:行全体を削除する方法
発言  かみちゃん  - 04/5/1(土) 12:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>コンボボックスで選択した行全体を削除する方法を教えて下さい。

コンボボックスで選択した行とは、行番号のことでしょうか?
 Rows(コンボボックスで選択した行).Delete
でできそうな気がしますが・・・

【13304】Re:行全体を削除する方法
質問  こっこ  - 04/5/1(土) 13:13 -

引用なし
パスワード
   ありがとうございます。

教えて頂いた分で、やってみたのですが、
↓↓↓↓↓
Target = ComboBox1.ListIndex
Rows(Target).Delete (xlShiftUp)

で、削除をすると、コンボボックスで指定している、行とは違う行が削除されます。上の文では何かおかしいのでしょうか??

ご返答お願いします。

【13306】Re:行全体を削除する方法
回答  Asaki  - 04/5/1(土) 13:29 -

引用なし
パスワード
   こんにちは。

ListIndex は、リスト内の選択されている要素の番号です。(0から始まる)
つまり、選択している値ではありません。
Value
をお使いください。

【13307】Re:行全体を削除する方法
お礼  こっこ  - 04/5/1(土) 13:47 -

引用なし
パスワード
   じぶんなりに解釈して・・・
Rows(Target).Delete (xlShiftUp)

Rows(Target+1).Delete (xlShiftUp)

としてみたら出来ました。

Asaki さん、 かみちゃん さん
ありがとうございましたm(__)m

【13308】Re:行全体を削除する方法
発言  Asaki  - 04/5/1(土) 13:59 -

引用なし
パスワード
   仮に、コンボボックスに
10
20
30
という3つの要素が入っていた場合、
20を選択するとListIndexは1になります。

>Rows(Target+1).Delete (xlShiftUp)
で大丈夫ですか?

>Value
>をお使いください。
は、ListIndex を Value に変えましょう、という意味ですが。。。

【13310】Re:行全体を削除する方法
質問  こっこ  - 04/5/1(土) 14:36 -

引用なし
パスワード
   Asaki さん、ありがとうございます。


Target = ComboBox1.Value
  rc = MsgBox("削除しますか??", vbQuestion + vbYesNo)
  If rc = vbYes Then
    Rows(Target+1).Delete (xlShiftUp)
  Else
    Unload Me
  End If

で、出来たのですが、これではダメなのでしょうか??

【13311】Re:行全体を削除する方法
発言  こっこ  - 04/5/1(土) 14:42 -

引用なし
パスワード
   先程の追加ですが・・・

先程
Target = ComboBox1.Value
  rc = MsgBox("削除しますか??", vbQuestion + vbYesNo)
  If rc = vbYes Then
    Rows(Target).Delete (xlShiftUp)
  Else
    Unload Me
  End If
と、しましたが、やはり何か動きがおかしいみたいで。。。
削除される行と削除できない行が出来てしまいます。
何か、いい方法を教えていただければと思います、、、
宜しくお願い致します。

【13312】Re:行全体を削除する方法
回答  Asaki  - 04/5/1(土) 14:47 -

引用なし
パスワード
   文法的には問題はないようですし、実際のコンボボックスの中身が解りませんから何ともいえませんが、
Target に +1 すると、
例えば、コンボボックスで 5 と選択したら、6行目をDeleteすることになりませんか?

【13313】Re:行全体を削除する方法
回答  Asaki  - 04/5/1(土) 14:49 -

引用なし
パスワード
   レスが入れ違いになりました。

コンボボックスの中身は、どのように設定していますか?
上手く削除出来ないときに、何かエラーは出ますか?

【13315】Re:行全体を削除する方法
質問  こっこ  - 04/5/1(土) 14:56 -

引用なし
パスワード
   ▼Asaki さん:何度もありがとうざいます。

Target +1 としておかないと、選択している前の行が消えてしまいます。
例えば、コンボボックスで 10 と選択したら、9行目をDeleteされてしまいます。

どうしてでしょうか??

【13316】Re:行全体を削除する方法
回答  Asaki  - 04/5/1(土) 15:07 -

引用なし
パスワード
   >Target = ComboBox1.Value
の後に
MsgBox Target
と入れて動かしてみてください。
選択されている内容と、実際の処理対象の内容を確認をしてみましょう。

また、
>Target = ComboBox1.Value

Target = ComboBox1.Text
とした場合の動作も確認してみてください。

【13319】Re:行全体を削除する方法
質問  こっこ  - 04/5/1(土) 15:54 -

引用なし
パスワード
   Target = ComboBox1.Text
  MsgBox Target
  rc = MsgBox("削除しますか??", vbQuestion + vbYesNo)
  If rc = vbYes Then
    Rows(Target + 1).Delete (xlShiftUp)
  Else
    Unload Me
  End If
と、して動作確認をしてみました。

上手く言い表せないんですが、エラーは出ません。
ですが、『MsgBox Target』で表示されているのに、削除できなかったりします。
違うフォームから、セルにデータを入力し、それを削除しようとしているのですが・・・。

【13328】Re:行全体を削除する方法
回答  Asaki  - 04/5/1(土) 19:50 -

引用なし
パスワード
   >『MsgBox Target』で表示されているのに、削除できなかったりします。
これは、例えば、コンボボックスで 5 を選択して、MsgBox でも 5 と表示されるのに、4行目が削除されてしまう、というような意味ですか?
Value を使った場合と、Text を使った場合とでは、違いはありましたか?

該当のマクロが動いている間、対象とするシートは表示されていますか?
コンボボックスの中身は、どのようにして設定していますか?

【13482】Re:行全体を削除する方法
質問  こっこ  - 04/5/6(木) 14:29 -

引用なし
パスワード
   ▼Asaki さん:こんにちは。

>>『MsgBox Target』で表示されているのに、削除できなかったりします。
>これは、例えば、コンボボックスで 5 を選択して、MsgBox でも 5 と表示されるのに、4行目が削除されてしまう、というような意味ですか?
→そうです。別のフォームから登録処理も出来るようにしているのですが、、、
その際にコンボボックスで選択する番号を入力しているのですが、
 (NewData = Range("A65536").End(xlUp).Row + 1
  With Worksheets("sheet1")
  Cells(NewData, 1) = NewData - 1
  UserForm1.ComboBox1.AddItem NewData - 1)
削除をする際に、途中を削除してしまうと、番号がズレてしまい、フォーム上で選択されている、データが削除できなかったりします。
((例えば、1〜20迄登録されている中の15を消すと、16以降がずれてしまい、削除できないということです。分かりにくくてすいません))


>該当のマクロが動いている間、対象とするシートは表示されていますか?
→表示されています。

>コンボボックスの中身は、どのようにして設定していますか?
→コンボオックスの中身です。
Private Sub ComboBox1_Change()
  Dim Target As Long
  Dim myDate As String '指定日付
  Dim Days As String '間隔(日)
  Dim today As String
  
  today = Format(Now(), "ggge年m月d日")
  Target = ComboBox1.ListIndex
  
  If Worksheets("sheet1").Cells(Target + 2, 9) = "" Then '*免許を持っていない場合*
    Label15 = "無期限" '*無期限と表示*
    Label18 = "***日" '*残数を***日とする*
  Else
    myDate = Worksheets("sheet1").Cells(Target + 2, 9).Value
    Label15 = Format(myDate, "ggge年m月d日")
    Sheet1.Cells(Target + 2, 11) = DateDiff("d", Date, myDate) & "日"
    Label18 = Format(Sheet1.Cells(Target + 2, 11), "d日")
  End If
  
  Label7 = Cells(Target + 2, 2) '*名前*
  Label8 = Cells(Target + 2, 3) '*フリガナ*
  Label9 = Cells(Target + 2, 4) '*現住所*
  Label10 = Cells(Target + 2, 5) '*連絡先*
  Label11 = Cells(Target + 2, 6) '*携帯*
  Label12 = Cells(Target + 2, 7) '*アドレス*
  Label16 = Format(Cells(Target + 2, 10), "ggge年m月d日")   '*写真撮影日*
  If Dir(Cells(Target + 2, 8)) <> "" Then '*if文。画像の有無*
   Image1.Picture = LoadPicture(Cells(Target + 2, 8)) '*画像があるとき:指定ファイルを表示*
  Else
   Image1.Picture = LoadPicture() '*画像がないとき:無表示*
 End If
End Sub

【13488】Re:行全体を削除する方法
回答  Asaki  - 04/5/6(木) 15:25 -

引用なし
パスワード
   >削除をする際に、途中を削除してしまうと、番号がズレてしまい、
>フォーム上で選択されている、データが削除できなかったりします。

データ削除のタイミングで、コンボボックスの中身を入れ替えるしかないと思いますが。

【13490】Re:行全体を削除する方法
お礼  こっこ  - 04/5/6(木) 15:54 -

引用なし
パスワード
   そうですか・・・。

分かりました。ありがとうございました。

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