例えば5つのキャラがいて
モジュールにキャラ全部のデータを""にする関数を作っておいて
削除ボタン作ってそれを実行したとしたらすべてのキャラのデータが空になります。でもキャラのデータを読み込む際には一度部分的に変数に値が残っておかないようにしておくため、読み込む前に空にする関数を命令させるので
どうやったら削除ボタンでその選んだキャラのみでデータを削除したらいいのかわかりません。
だれか教えてください。
よく意味がわかりません
開発環境、現在のコードを提示し、それではどこがまずいのかを明示してください
何度もレスを繰り返して情報を引き出すのは面倒です
'キャラ設定構造体の内容をリセット
Sub Reset_character()
Dim i As Long
Dim j As Long
For i = 0 To CHARA_ACOUNT_MAX - 1
mai(i).tel = ""
mai(i).Nam = ""
mai(i).Adres = ""
mai(i).POP = ""
mai(i).SMTP = ""
mai(i).ID = ""
mai(i).Pass = ""
mai(i).RepeatA = ""
mai(i).RepeatB = ""
mai(i).RepeatC = ""
mai(i).RepeatD = ""
mai(i).RepeatE = ""
mai(i).RepeatF = ""
mai(i).RepeatG = ""
For j = 0 To SENDMAIL_MAX - 1
mai(i).Subject(j) = ""
mai(i).Body(j) = ""
Next j
Next i
End Sub
と作っておいて、
'削除
If vbYes = MsgBox("削除しますか?", vbYesNo + vbQuestion, "キャラの削除") Then
Reset_character
End If
としようとしたら全部のキャラのデータが""になってしまうんです。
そのキャラを選んだらデータがテキストボックスにでるようにしておいて、そこで削除選んだらそのキャラだけ""になるようにしたいんです。
わかりにくくてすいません。
>For i = 0 To CHARA_ACOUNT_MAX - 1
>'〜
>Next i
当然、配列内のすべてのデータ(キャラとやら)を対象にしているので、
そのように動きます。
上記のループ部分を消して、
Sub Reset_character(i as Integer)
'〜
End Sub
こんな感じで外からの値を受け入れて、
If vbYes = MsgBox("削除しますか?", vbYesNo + vbQuestion, "キャラの削除") Then
Reset_character(ここで削除するキャラを指定)
'指定するキャラ=Reset_character()内でいうところの変数i
End If
で、どうでしょうか。
ちなみに
>そのキャラを選んだらデータがテキストボックスにでるようにしておいて、
ここはまた別の問題になってきますね。
どのような手段でキャラを選択するか分かりませんが、(リストボックス?)
私なら、キャラを選択した時点で、そのキャラを識別するための数値を変数に記憶しておきます。
で、その数値をそのまま、先ほど提示させていただいたReset_character()に流用します。
私なら、ですが…。
黒頭巾さんの回答で1データだけ削除できます
もし全データを消したい場合は、サブルーチンの中でループさせるのではなく、呼び出し側でループさせて呼び出してください
そうすればサブルーチンを複数持つ必要がないです
また最初のレスにも書きましたが、必ず開発環境を書いてください
質問内容によっては回答内容が変わってくる場合が(多々)あります
>そのキャラを選んだらデータがテキストボックスにでるようにしておいて、
という部分に関しては、質問内容がこの部分よりも先の段階になる為、既にできていると判断しますがよろしいでしょうか
黒頭巾さんと通ってみたさん、ありがとうございます。さっそく変えてみます。
あと
>そのキャラを選んだらデータがテキストボックスにでるようにしておいて
ってのできてます。
わかりにくい質問ですいませんでした。まだまだ初心者なもんで・・。
>まだまだ初心者なもんで・・。
と思っているうちは、なるべく標準語を使うように心がけてください。
ツイート | ![]() |