質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

1476閲覧

VBA 削除機能の実装の仕方

rebell

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2018/11/12 02:32

Excelでお仕事

質問の仕方が悪かったので再度あげさせて頂きます。
上記サイトを参考に削除機能の実装を目指しております。

VBA

1'*************************************************************************************************** 2' ■■■ コントロールイベント ■■■ 3'*************************************************************************************************** 4'* 処理名 :BTN_DEL_Click 5'* 機能  :「削除」ボタンイベント(Click) 6'--------------------------------------------------------------------------------------------------- 7'* 返り値 :(なし) 8'* 引数  :(なし) 9'--------------------------------------------------------------------------------------------------- 10'* 作成日 : 11'* 作成者 : 12'* 更新日 : 13'* 更新者 : 14'* 機能説明: 15'* 注意事項: 16'*************************************************************************************************** 17Private Sub BTN_DEL_Click() 18 19 Dim dbCon As ADODB.Connection ' ADODB.Connection 20 Dim dbCmd As ADODB.Command ' ADODB.Command 21 Dim strBusyoCd As String ' 選択部署コード 22 Dim strYakuCd As String ' 選択役職コード 23 Dim strSQL As String ' SQL文編集WORK 24 Dim blnUpdate As Boolean 25 ' フォーム登録内容チェック 26 If Not FP_CheckForm(strBusyoCd, strYakuCd) Then Exit Sub 27 28 '確認する 29 msg = "このデータを削除しますか?" 30 ret = MsgBox(msg, vbQuestion + vbOKCancel, "") 31 If ret = vbOK Then 32 ' データベースへの接続 33 If Not FP_GetSqlConnection(dbCon) Then 34 Me.Hide 35 Exit Sub 36 End If 37 38 ' 登録するSQL文を作る 39 strSQL = "DELETE MST_HAIZOKU SET" 40 41 ' 実行する 42 dbCon.Execute (Sql) 43 44 MsgBox "削除しました。", vbInformation + vbOKOnly, "データ削除" 45 46 Else 47 MsgBox "処理を中断します" 48 49 End If 50 51 ' データベース接続を閉じる 52 dbCon.Close 53 Set dbCon = Nothing 54 g_blnReturnValue = True 55 Me.Hide 56 57End Sub 58```![コンパイルエラー](e34d189190f4e66b998312551036f538.jpeg) 59 60自分なりに調べこのようなコードを書いて実行をしてみました。 61スクショのようなコンパイルエラーが発生し、MsgBoxも消すことが出来ない状態です。 62 63Msgの変数を定義?してあげればいいというのはわかるのですが、どのようにすればいいのか具体的に理解しておりません。 64 65わかる方いましたらご教授お願いいたします。 66よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

strSQL = "DELETE MST_HAIZOKU SET" ' 実行する dbCon.Execute (Sql)

ここでもエラーがでるでしょう。
Sql という変数も宣言してないですよね。

dbCon.Execute (strSQL)

としないと。

あと、

DELETE MST_HAIZOKU SET

というSQL文もこんな構文はありませんので、Executeするところでエラーになるでしょうね。
レコード削除のSQLは下記を参考にしてください。

【Access】SQLによる削除クエリ | ほそぼそプログラミング日記

また、データベースからレコードを削除したら、エクセルのシートの対応する行を削除する処理も必要になりますね。

参照先のコードを応用するには、質問者さんの現状のスキルでは不足している印象です。

SQLについての学習
VBAについての学習
の両方が必要だと思います。

投稿2018/11/12 04:16

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rebell

2018/11/12 04:22

ありがとうございます。 動作確認しながら変数を定義していてsqlも無かったので追加しました! 参考サイト見てみます。 やることが山積みですが1つずつやっていきます。。
hatena19

2018/11/12 06:14

strSQLにSQL文を代入して、dbCon.Execute (strSQL) でそのSQLを実行してする という処理の流れを理解しないと。 いろいろ頑張ってください。
guest

0

ベストアンサー

メッセージボックスの表示部分は流用したソースに別途追加したものだと思われますが、
意味も分からずに追加しているのが現状の解決できない原因です。

VBA

1'メッセージボックスに表示する文言を変数に代入 2msg = "このデータを削除しますか?" 3'メッセージボックスを表示し結果を`ret`に受ける 4ret = MsgBox(msg, vbQuestion + vbOKCancel, "")

上記で使用されている変数はMSGで、Option Explicitが指定されていて、変数の宣言を強制されるのでエラーになります。

Dim MSG
をそのイベントプロシージャに追加して下さい。

VBA

1ret = MsgBox("このデータを削除しますか?", vbQuestion + vbOKCancel, "")

上記のように変更すると、MSGという変数は使用しなくて済むので、変数の宣言は不要です。

投稿2018/11/12 02:55

編集2018/11/12 03:05
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rebell

2018/11/12 03:01

ありがとうございます。 使いたい関数はDimで定義してあげないといけないんですね。 追加して動作を確認してみます!
sazi

2018/11/12 03:03

関数ではなく変数です。
rebell

2018/11/12 03:05

すいません、勘違いしておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問