设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 230|回复: 1
打印 上一主题 下一主题

一个专门的off to vba论坛!!

[复制链接]
跳转到指定楼层
1#
发表于 2002-10-11 23:39:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://www2.moug.net/cgi-bin/mdboard.cgi?acm_v

谁看的懂!!请翻译一下!!我只能看懂一部分!!不过这个网站交流的东西很好!!











分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2002-10-11 23:51:00 | 只看该作者
谁可以解释??
例如:Function プロシージャと検索

○月○日 ---●信号---WHY? WHAT?

  今日は、先輩のBさんから新しいサンプル・モジュールを受け取ったが、
その中に、次のような少し変なコードがあった。

Sub ABC_test1()
    …………
  If  EE  then
    Exit Sub
  End if
    …………
End Sub

 If 文の条件式が、   If  AA=BB then   または、   If  CC<>DD then
なら判るが、 「If  EE  then」  なんて、おかしいので、
「If  EE=0  then」の「間違いじゃないですか?」と、
先輩に尋ねたら、「Function プロシージャ」だから、それで「イーイー」…「EE」…んだよ、
と半分川平(かびら)さん風に駄洒落で答えていたが、
「Function プロシージャ」って何なのか、本当に「エーエー」のか……(注:少し訛っているなあ?)、
アドさんに聞いてみよっと。


--------------------------------------------------------------------------------

---≪解説≫---

 それじゃ、今日は 「Function プロシージャ について」アドヴァイスすることにしよう。

 前回、「プロシージャ」は、「Subプロシージャ」と「Functionプロシージャ」に大別され、
「Subプロシージャ」や「Functionプロシージャ」など「プロシージャ」全体を指して
モジュールといい、具体例として
マクロ記録 のSub Record1()を、共通ルーチンのSub セル_Center()に直して、更に
メインルーチンから共通ルーチンをCallルーチン
Call セル_Center
で呼び出す方法を教えたね。

 これらの具体例は、すべて「Subプロシージャ」だったが、
今度は、もう一つのプロシージャ、すなわち、「Functionプロシージャ」について説明するよ。


 調べ方(1)
 まず最初に、太郎君は、初心者だから、「If EE then」の 「EE」は、
単なる変数か?それとも、プロシージャ名か?を調べる方法を教えて上げるね。
「EE」が
単なる変数なら、太郎君が言うように、確かにおかしい訳だから。


プロシージャ内の変数宣言……

 Dimステートメント文の中に「EE」があるか?


モジュール・シート先頭の変数宣言……

 Dimステートメント文の中に「EE」があるか?
 Publicステートメント文の中に「EE」があるか?


パブリック・変数宣言…… ブックの先頭シート内

 Publicステートメント文の中に「EE」があるか?


 調べ方(2)
 2.の方法で「EE」が変数宣言されていなかったら、まず、「 変数」では、ない。
う~ん?なに?もう目が疲れたって?
はは~ん!「EE」があるかないか、Dim文を全部目で読んでいたね。
それじゃ、疲れるのは当たり前だよ。


(ツールバーメニューからの基本的検索手順)

  [編集]-[検索]
        ↓
   検索(DLG)
        ↓
検索する文字列「EE」を入力
        ↓
検索方向「すべて」
        ↓
対象「プロシージャ」…or…「モジュール」…or…「すべてのモジュール」
        ↓
※「完全に一致する単語だけを検索する」……「チェクボクス」を[on]にする
        ↓
 [次を検索]ボタン
        ↓
「!検索文字列が見つかりません。」
        ↓
   [OK]ボタン


上のツールで検索の対象を「プロシージャ」→「モジュール」→「すべてのモジュール」
へと変化させて検索すると、楽ですよ。ぴゅう太が全部探してくれるから。

※ここは、必ずしも、[on]にしなくても良いのだが、[off]の場合、「Wsheet」の「ee」まで
拾ってしまうので、数の多いときは、[on]にした方が jump してくれるので goodだ。


 調べ方(3)
 3.の方法で探していると、必ず次のような「Functionプロシージャ」(例)に出くわすだろう。
これが、先輩の駄洒落で言っていた、 「イーイー」…「EE」…「Function プロシージャ」だよ。

(具体例)

Function EE() As Boolean

  If MM<1 Or MM>12 Then
    EE = True     (真) ⇒エラー発生
  Else
    EE = False    (偽) ⇒エラーなし
  End if

End Function

 「アドさんの改修」…………
 アドさんなら、4.の「EE」のような、変数名か、プロシージャ名か分からないような
プロシージャ名は付けないので、次のように改修します。

(モジュール・シート先頭の変数宣言)
Option Explicit
Dim MM As Integer 

    …………
Sub ABC_test1()
    …………
  MM = Application.InputBox("月を入力してください。")

  If 月check_err then
    Exit Sub
  End if
    …………
End Sub
    …………
Function 月check_err() As Boolean

  If  MM<1 Or  MM>12 Then
    月check_err = True
  Else
    月check_err = False
  End if

End Function

 (省略型)
要するに、「If 月check_err then」は、
「If
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-10 00:51 , Processed in 0.102907 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表