• ベストアンサー

ExcelのマクロをAccessで動かすには…

今までExcelを使用していてVBAも段々と理解してきたのですが 今回Accessを使用することになって詰まってしまいました。 下のようなExcelのマクロ(VBA)があるのですが、 これをAccessでも同じように動かしたいのですがわかりません(汗) ----------------------------------------------- Sub テスト() Dim GYO As Long GYO = 1 Do Until Worksheets("テスト").Cells(GYO, 1).Value = "" If Worksheets("テスト").Cells(GYO, 1).Value >= 80 Then Worksheets("テスト").Cells(GYO, 2).Value = "合格" Else Worksheets("テスト").Cells(GYO, 2).Value = "不合格" End If GYO = GYO + 1 Loop End Sub ----------------------------------------------- これでAccessのレコード一つ一つの合否を入力する欄に 自動で入力されるようにしたいのですが、 Accessでの記述方法がよくわからないのです。(^_^;) お詳しい方、よろしくお願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

更新クエリで、 合格クエリ UPDATE テスト表 SET 合否='合格' WHERE 成績>=80; 不合格クエリ UPDATE テスト表 SET 合否='不合格' WHERE 成績<80; とすればいいと思います。 これだけでもいいけど、あとは、マクロで、このクエリを呼び出せばいいと思う。 答えになってなかったらすみません

lenpou
質問者

お礼

回答どうも有り難うございます。 想定していた回答とは違いましたが(^_^;) 回答して頂いた方法で今回は解決できそうですね。 また今後何かありましたらその際はよろしくお願い致しますm(_ _)m

その他の回答 (1)

noname#182251
noname#182251
回答No.2

#1の回答で良いと思いますが、それ以前に折角データベースを使用するのであれば「データベース的思考法」を身に着けられることをお薦めします。 まず「合否」フィールドの型は文字型ではなく、Yes/No型に。するとクエリの該当部分は 合否=Yes に(合否="Yes"ではない) さらにいえばデータベースでは「計算で得られる値は保持しない」という(規則ではないが)一般的方針があります。もちろんこれはそれほどきついものではなくケースバイケースで運用しますが。 ともかくアクセスの入門書を立ち読みでも良いからひもとかれると良いでしょう。#1のご回答も、文字で表現するにはあのようにしか出来ませんが、アクセスの世界では視覚的に判り易い「クエリ」を使用して簡単に操作できます。 それでは折角マスターしたVBAは役に立たないのか?そのようなことはありません。クエリでは処理できないような複雑な判定やその他動作はVBAで記述することになります。しかしそれまでは「アクセスの特性」を活用して楽をしましょう

lenpou
質問者

お礼

回答どうも有り難うございます。 やはりExcelとAccessでは考え方が大分違うと言うことですね。 しばらくはAccessの理解に励みたいと思います。 また今後何かありましたらその際はよろしくお願い致しますm(_ _)m

関連するQ&A