Excel VBA質問箱 IV

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

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


16 / 13234 ツリー ←次へ | 前へ→

【80339】ListView:行がどんどん増えてしまう 愛沢 19/1/27(日) 11:04 質問[未読]
【80340】Re:ListView:行がどんどん増えてしまう マナ 19/1/27(日) 14:06 発言[未読]
【80345】Re:ListView:行がどんどん増えてしまう 愛沢 19/1/28(月) 6:37 質問[未読]
【80346】Re:ListView:行がどんどん増えてしまう 愛沢 19/1/28(月) 6:51 発言[未読]
【80353】Re:ListView:行がどんどん増えてしまう マナ 19/1/30(水) 20:43 発言[未読]
【80368】Re:ListView:行がどんどん増えてしまう 愛沢 19/2/1(金) 23:59 お礼[未読]

【80339】ListView:行がどんどん増えてしまう
質問  愛沢  - 19/1/27(日) 11:04 -

引用なし
パスワード
   【80335】ListView:引数は省略できません。の続きとなります。

前回はありがとうございました。

ゲームの団員一覧を作成しようと思い後々誰でも弄れるような仕様にしたく作っております。

1.【auto_open】で【Listview】の初期処理
2.【読込ボタン】を押すと団員リストを読み込み
3.Listviewをクリックすると登録フォームを開く
4.登録フォームから【更新ボタン】を押すと同じ行のデータを上書きする。

の4番でつまづいております。

'==================================

Sub 団員登録更新処理()

  With 団員登録
    
    No = .TextBox1
    名前 = .TextBox2
    レベル = .TextBox3
    貢献度 = .TextBox4
    In率 = .TextBox5
    最大戦闘力 = .TextBox6
    最終更新日 = Date
    備考 = .TextBox8
      
  End With
  
  With 団員一覧.ListView1.ListItems.Add
        
    .Text = No
    .SubItems(1) = 名前
    .SubItems(2) = レベル
    .SubItems(3) = 貢献度
    .SubItems(4) = In率
    .SubItems(5) = 最大戦闘力
    .SubItems(6) = 最終更新日
    .SubItems(7) = 備考

  End With

End Sub
'==================================

登録フォームを開く、内容を編集する、更新ボタンを押す
を作成したのですが、
帰ってきたデータをそのまま返しても次に新しい行が作られます

No    名前    レベル    貢献度    
1    愛沢    48    100000    
2    ヘラ    666    666666    

とあるデータに更新を押すと
No    名前    レベル    貢献度    
1    愛沢    48    100000    
2    ヘラ    666    666666
2    ヘラ    666    666666
2    ヘラ    666    666666
2    ヘラ    666    666666

と押す度に増えていきます。
 ※見づらい為5カラム目以降は省略しております。

流石に、この部分に対して【団員一覧.ListView1.ListItems.Clear】とやってしまうと全部消えてしまいますし・・・

お手すきの方がいらっしゃいましたら、よろしくお願いいたします。

【80340】Re:ListView:行がどんどん増えてしまう
発言  マナ  - 19/1/27(日) 14:06 -

引用なし
パスワード
   ▼愛沢 さん:

 
>  With 団員一覧.ListView1.ListItems.Add

ここで.addしているからではありませんか。

【80345】Re:ListView:行がどんどん増えてしまう
質問  愛沢  - 19/1/28(月) 6:37 -

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

>>  With 団員一覧.ListView1.ListItems.Add
>
>ここで.addしているからではありませんか。

.addを削除いたしました。

==============================
Sub 団員登録更新処理()
  With 団員一覧.ListView1.ListItem
        
    .Text = No
    .SubItems(1) = 名前

==============================
Private Sub CommandButton3_Click() 

  Call 団員一覧表示処理 <= 引数は省略できません

End Sub
==============================

と出るようになりました

これはCommandButton3_Clickの()に引数を入れるという事でしょうか?
Private Subはお決まりのような定型引数?があるみたいなのですが、コマンドボタンに対しては()しか載っていないようで


追伸
これは前回の質問でも引っかかったのですが、VBAの引数について今一理解が出来ておりません
仕事の都合で急にVBAを1-2か月、フォームを10日程しか触っていないので、当然といえば当然かもしれませんが、図書館とかに行ってVBAだけの本を参考にして勉強したほうがいいのでしょうか?(NetだとCとかVBが検索にひっかかりまくって中々検索が進みません
なにかListViewについてよくわかるサイト、本が有ればいいのですが

【80346】Re:ListView:行がどんどん増えてしまう
発言  愛沢  - 19/1/28(月) 6:51 -

引用なし
パスワード
   ※行数削除の為 Noと名前のみになっておりますが、Publicの数だけデータがあります。
'========================================================
'標準モジュール
Public No As Long
Public 名前 As String
Public レベル As Long
Public 貢献度 As Long
Public In率 As String
Public 最大戦闘力 As Long
Public 新規登録日 As String
Public 最終更新日 As String
Public 備考 As String
Public CNT1 As Long
Public CNT2 As Long
Public CNT3 As Long
Public LastCNT1 As Long
Public LastCNT2 As Long
Public WS1 As Worksheet
Option Explicit
'-------------------------------------------------------------------
Sub auto_open()
  Call 初期処理
  団員一覧.Show
End Sub

Sub 初期処理()
  Set WS1 = ThisWorkbook.Worksheets("団員一覧")
  With 団員一覧.ListView1
    .View = lvwReport      ''表示
    .LabelEdit = lvwManual   ''ラベルの編集
    .HideSelection = False   ''選択の自動解除
    .AllowColumnReorder = True ''列幅の変更を許可
    .FullRowSelect = True    ''行全体を選択
    .Gridlines = True      ''グリッド線
    '列見出し
    .ColumnHeaders.Add , "No", "No", 50
    .ColumnHeaders.Add , "名前", "名前", 50
  End With
End Sub

Sub 団員一覧表示処理()
  LastCNT1 = WS1.Cells(Rows.Count, 1).End(xlUp).Row
  CNT1 = 2
    団員一覧.ListView1.ListItems.Clear
    For CNT2 = 1 To 99
      If CNT1 <= LastCNT1 Then
        If Cells(CNT1, 2) = "" Then
          GoTo 10
        Else
          Call 団員一覧書込処理
          CNT1 = CNT1 + 1
        End If
      Else
        GoTo 10
      End If
    Next
10
End Sub

Sub 団員一覧書込処理()
  With 団員一覧.ListView1.ListItems.Item
    .Text = Cells(CNT1, 1)
    .SubItems(1) = Cells(CNT1, 2)
  End With
End Sub

Sub 団員登録表示処理()
  With 団員登録
    .TextBox1 = No
    .TextBox2 = 名前
  End With
End Sub

Sub 団員登録更新処理()
  With 団員登録
    No = .TextBox1
    名前 = .TextBox2
  End With
  
  With 団員一覧.ListView1.ListItem
    .Text = No
    .SubItems(1) = 名前
  End With
End Sub

Sub 更新チェック()
'未着手
End Sub

'========================================================
'団員一覧フォーム
Private Sub CommandButton2_Click()
  Unload Me
End Sub

Private Sub CommandButton3_Click()
  Call 団員一覧表示処理
End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
  No = Item
  名前 = Item.SubItems(1)
  Call 団員登録表示処理
  団員登録.Show
End Sub

'========================================================
'団員登録フォーム
Private Sub CommandButton2_Click()
'  Call 更新チェック
  Unload Me
End Sub

Private Sub CommandButton3_Click()
  Call 団員登録更新処理
End Sub

Private Sub TextBox7_Change()
  TextBox7.Locked = True
End Sub
'========================================================

【80353】Re:ListView:行がどんどん増えてしまう
発言  マナ  - 19/1/30(水) 20:43 -

引用なし
パスワード
   ▼愛沢 さん:

>Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
>  No = Item
>  名前 = Item.SubItems(1)
>  Call 団員登録表示処理
>  団員登録.Show
>End Sub


呼び出しが多すぎてわかりにくいですが
こうではありませんか?


Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
  No = Item
  名前 = Item.SubItems(1)
  Call 団員登録表示処理
  団員登録.Show
  Item = No
  Item.SubItems(1) = 名前
End Sub

【80368】Re:ListView:行がどんどん増えてしまう
お礼  愛沢  - 19/2/1(金) 23:59 -

引用なし
パスワード
   マナ様
ありがとうございます、愛沢です。

急な出張でマクロが弄れずお礼が遅くなった事をお詫びいたします。


>Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
>  No = Item
>  名前 = Item.SubItems(1)
>  Call 団員登録表示処理
>  団員登録.Show
>  Item = No
>  Item.SubItems(1) = 名前
>End Sub

に変えた所、引数は省略できません。で怒られました

Private Sub CommandButton3_Click()
  Call 団員登録更新処理
End Sub

コールで作成するのはもっと勉強してからにして今回はコールを使わずに作成してみようかと思います。

貴重なお時間ありがとうございました。

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