マンガでよめる痔のこと・薬のこと

いつもお世話になっております
Listbox に 表示されているデータを
複数選択 その 選択された データを
他のシートへ移動することは可能でしょうか
画像添付しました。

遣りたいこと
123 124 を選択して コマンドボタンを押したら
別シートに移動

よろしくお願いいたします。


下記のコードは画像で表示されているコードです。
Private Sub UserForm_initialize()
With ListBox1
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row
.AddItem ""
.List(.ListCount - 1, 0) = Cells(i, 1).Value
.List(.ListCount - 1, 1) = Cells(i, 2).Value & Format(Cells(i, 2), "aaaa")
Next
End With
End Sub

「VBA 選択したデータを別シートに移動」の質問画像

質問者からの補足コメント

  • どう思う?

    もし可能なら今日より前の日付だったら

    コマンドボタンを押下
    別シートに移動のやり方も

    おしえてくれませんでしょうか

      補足日時:2020/06/30 09:24
  • どう思う?

    下記のコードでは選択されたリストボックスないでの
    削除になっています。
    このコード利用して
    セルの値を削除かつ選択されたデータを別シートに移動
    できればいいのですが。

    Dim i As Integer
    For i = ListBox1.ListCount - 1 To 0 Step -1
    If ListBox1.Selected(i) Then
    ListBox1.RemoveItem (i)
    Exit For
    End If
    Next i

      補足日時:2020/06/30 09:53
  • うーん・・・

    おしえてくれませんでしょうか

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/06/30 12:58
  • うーん・・・

    いつもお世話になっております
    画像のコマンドボタンの横にあるテキストボックス4個と
    今回の質問って繋がりがあるのでしょうか?
    ・本当は日付を入力してその期間はという感じにしたかったのです。が
    それより、コマンドボタンを押したら今日より前の日付に
    したほうがいいと思いました。
    For i = ListBox1.ListCount - 1 To 0 Step -1
    If ListBox1.Selected(i) Then
    Range(Cells(i + 1, 1), Cells(i + 1, 4)).Delete
    ListBox1.RemoveItem (i)
    Exit For
    End If
    Next i
    ここまではできましたが、シートに移動がわかりません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/06/30 14:04
  • うれしい

    >.List(.ListCount - 1, 1) = Cells(i, 2).Value & Format(Cells(i, 2), "aaaa")
    わたしもそう思います。
    あとから曜日をいれるのを忘れていたのを思い出して、なんか
    いい方法がないかと考えていたらうまくできたので
    こうしてしまいました。
    すこし考えてみます。
    ありがとうございました。

    No.4の回答に寄せられた補足コメントです。 補足日時:2020/06/30 15:47

A 回答 (4件)

>コマンドボタンを押したら今日より前の日付に



個人的な意見ですが、

>.List(.ListCount - 1, 1) = Cells(i, 2).Value & Format(Cells(i, 2), "aaaa")

ここで 日付型と文字列型を連結しちゃってますからねぇ。
もう1列増やして日付と曜日を別にしちゃうってならやりやすかったのかも。
或いは半角スペースなどの区切り文字を間に入れてSplitしちゃうとか。

ママチャリさんの方法ででも一括コピペ&削除ではなく、For Each で個別に判断させれば行けちゃうんじゃないのかな?
この回答への補足あり
    • good
    • 0

教えるほどの内容ではないと思うのですが、こんな感じでしょうか。


移動したいセルを行で選択して、マクロを実行してみて下さいね。

Sub Macro1()
With Selection
.Copy Destination:=Worksheets("Sheet2").Range("A1")
.Delete
End With
End Sub

ただ、この流れだと「今日より前の・・・」の部分は実装不可能です。
    • good
    • 0
この回答へのお礼

ありがとうございました。
すこし考えてみます。

お礼日時:2020/06/30 15:57

直接の回答ではありませんが気になった点で。



画像のコマンドボタンの横にあるテキストボックス4個と今回の質問って繋がりがあるのでしょうか?
例えば選択した日付をシートに移動させつつテキストボックスの値も書き込むとか?
この回答への補足あり
    • good
    • 0

回答で無くて申し訳ないのですが、わざわざリストボックスで表示して選択させる必要って、あるのでしょうか?「シート上で複数セルを選択した状態でマクロを実行すると移動できる」みたいなUIの方が、Excelらしいような気がするのですが・・・。

実装も簡単だし。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有難うございます。

お礼日時:2020/06/30 15:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング