![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Windows7 Excel2007でマクロ作成中の初心者です。
やりたいことは、リストボックスからシートを選択し、そのシートを削除する。
削除したら、リストボックスの中の、シート選択状態を解除し、その項目だけを
削除することです。
以下のコードで出来たのですが、これを統合して一個のコードにしたいです。
どうしたらよろしいでしょうか。
Private Sub 顧客削除_Click()
Dim i As Integer
Dim btn
Dim name As String
With 顧客リスト
For i = 0 To .ListCount - 1
If .Selected(i) Then
name = .list(i) '選択されたリストを変数に格納
btn = MsgBox("本当に、 " & name & " さんを削除していいですか?", _
vbYesNo, "削除の確認")
If btn = vbYes Then
Application.DisplayAlerts = False
Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete
Application.DisplayAlerts = True
リストボックスの項目削除
End If
End If
Next i
Worksheets(1).Activate
End With
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub
-----------------------------
Sub リストボックスの項目削除()
Dim i As Integer
For i = 顧客リスト.ListCount - 1 To 0 Step -1
If 顧客リスト.Selected(i) Then
顧客リスト.RemoveItem (i)
Exit For
End If
Next i
End Sub
No.2ベストアンサー
- 回答日時:
>それぞれのシートの名前が顧客の名前になっています。
ですよね。
Dim i As Integer
Dim btn
Dim name As String
With 顧客リスト
Application.DisplayAlerts = False
For i = 0 To .ListCount - 1
If .Selected(i) Then
name = .list(i) '選択されたリストを変数に格納
btn = MsgBox("本当に、 " & name & " さんを削除していいですか?", _
vbYesNo, "削除の確認")
If btn = vbYes Then
Worksheets(name).Delete
End If
End If
Next i
.Clear
For i = 2 To Worksheets.Count
.AddItem Sheets(i).name
Next
Application.DisplayAlerts = True
Worksheets(1).Activate
End With
と
Private Sub UserForm_Initialize()
With 顧客リスト
For i = 2 To Worksheets.Count
.AddItem Sheets(i).name
Next
End Sub
で十分ではないでしょうか?
Sheets(1)は削除しないものとしてです。
Application.DisplayAlerts = False
もFor~Nextの外側で十分ですね。
位置側に書くと何度もパソコンに無駄な動作をさせてしまいますね。
この回答への補足
お世話になります。今試してみました。
一番上のシート--顧客の名前が表示されませんが
削除等は完璧にできました。
Private Sub UserForm_Initialize()
Dim i As Integer
With 顧客リスト
For i = 2 To Worksheets.Count - 3
.AddItem Sheets(i).name
Next
End With
End Sub
今まで使っていたコードで修正していただくとあありがたいです。これだとすべての顧客がInitialize時に表示されるので・・以下のコードに入れ替えて実行するとエラーになります。
Private Sub UserForm_Initialize()
Workbooks("請求").Activate
Dim i As Integer
Const EXCEPT_NAME = "分類●経理●一覧●"
For i = 1 To Worksheets.Count - 3
If InStr(EXCEPT_NAME, Worksheets(i).name & "●") = 0 Then
顧客リスト.AddItem i & " " & Worksheets(i).name
End If
Next i
End Sub
No.1
- 回答日時:
前回回答したものです。
少し補足をしてください。顧客リストはどうやって取得しているのですか?
どこかのセルにリストがあって、ROWSOURCEで指定しているのか
Private Sub UserForm_Initialize()
を使ってVBAで取得しているのか
それと、顧客リスト=シート名ではないのか
と云う疑問がありますが、違っていますか?
この回答への補足
すいません。Private Sub UserForm_Initialize()
を使ってVBAで取得しています。
30以上のシートがあり、それぞれのシートの名前が顧客の名前になっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スプレッドシートの関数につい...
-
<新設税理士事務所です>ミロ...
-
エクセルで「3次元配列」表の...
-
顧客データと請求書、売上帳を...
-
エクセルマクロ ブックをアクテ...
-
顧客CDのCDって?
-
エクセルVBAを使って請求書作成...
-
Excel 印刷時に挿入
-
エクセルデータ。容量を減らす...
-
エクセルで一致する値を見つけ...
-
現在、日興証券で重大なトラブ...
-
VBA beforeprintについて
-
読み取ったQRコード/バーコード...
-
バーコードってダブらない?
-
国内線航空券をJALのアプリにて...
-
EXCELでバーコードを作成すると...
-
バーコードコントロールが印刷...
-
POVO2.0の128kbpsでPaypayやRPa...
-
テプラ PRO SR530 バーコード...
-
ライフカードの支払いについて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
顧客CDのCDって?
-
<新設税理士事務所です>ミロ...
-
エクセルで「3次元配列」表の...
-
現在、日興証券で重大なトラブ...
-
VBA リストボックス反映できない
-
エクセルの数式で教えてください。
-
VBA。リストボックスの値を別の...
-
エクセルで並び替えするとハイ...
-
エクセルデータ。容量を減らす...
-
エクセルVBA テキストボックス検索
-
EXCELシート内の数字での並び替...
-
エクセルで顧客の継続率
-
データ型が一致しない?
-
顧客データと請求書、売上帳を...
-
アクセス ACCESS VBAで入力の...
-
今繋がらない携帯番号の前の所...
-
Access クエリー Yes/No型の抽出
-
こんなモノは作れますか?
-
エクセルで一致する値を見つけ...
-
accessの文字数チェックについて
おすすめ情報