初めまして。
AccessのVBAを使用しているのですが、
コマンドボタンを10個用意して、
名前をそれぞれ1~10にしたのですが、
それらを繰り返し処理をしたいのですが、どうしたらいいですか?
例えば、
for i = 1 To 10
i.enabled = True
Next i

という風にしたかったのですが、
できないんです。
助けてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

Access の VBA の事を何も知らないので、外しているかも知れません。


VBでは、コントロール配列にすると簡単できますが。
コマンドボタンの名前は全部 Command1 となります。
ひとつひとつは、Command1(1),Command1(2)・・・・Command1(10) となります。


for i=1 to 10
Command1(i).Enabled=true
next i

VBA にコントロール配列と言う考え方がなかったら、ごめんなさい。
    • good
    • 0
この回答へのお礼

できました!!
ありがとうございました!
for i = to 27
if me.control(i).name=i then
処理
 end if
で、オブジェクトの名前と一致したら・・・ということができました!
有難うございました!

お礼日時:2001/12/08 20:30

For i = 1 to 10


 Me.Controls(CStr(i)).Enabled=True
Next i

ですね。

「ボタン1」~「ボタン10」ってな名前が付いている場合は、

For i = 1 to 10
 Me.Controls("ボタン" & i).Enabled=True
Next i

になります。


尚、Accessにはコントロール配列はありません。
    • good
    • 0

フォームのオブジェクトを列挙してその名前によって買えてあげればいいと思います。

(コントロール配列がないので)
適当にボタンを貼り付けてから、cmdEnableという名前のボタンを作成してコードビルダに下記のコードを貼り付けてください。

アクセス97で確認しましたが動くようです。



Private Sub cmdEnable_Click()
Dim com As Control
For Each com In Me
If com.Name Like "コマンド*" Then
com.Enabled = False
End If
Next
End Sub
    • good
    • 0

> オブジェクトを変数名で使用したいのですが


タイトルを見落していました。

外しました(^。^;)、すみません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QFor next使う場合、next iはできない?

vbsでFor next使う場合、next iはできないのですか?

for i = 1 to 2
msgbox ""
next i

をすると
"ステートメントの末尾が不正です"800A401
になります。

しかし
for i = 1 to 2
msgbox ""
next
にすると、問題ないです。

VBAではnext iでも実行できるけどVBSではだめなのでしょうか?
理由を教えてください。

Aベストアンサー

Excel2003(Office2003)は持ち合わせていないので、2002の場合なら・・
VBE上で
for i = 1 to 2
msgbox ""
next i
となっていたら、for の所にカーソルを持って行って、F1 キーを押せば
該当すると思われるものがピックアップされます。
あるいは、For まで打ち込んで、F1 とか
イミディエイトウィンドウ(Ctrl + G で出現)で、For まで打ち込んで、F1 とか
2002なら
---------------------
For キーワード
キーワード For は、次の構文で使用します。
For...Next ステートメント
For Each...Next ステートメント
Open ステートメント
-------------------------
となりますので、For Each...Next ステートメント をクリックすると
前回回答のがでます。
たしか、2002の場合はVBAのヘルプはインストール時のオプション扱いだった記憶・・
2003は分かりません。
蛇足ですがOffice2010のVBAのヘルプは今までで一番使いやすいです。
ところが2013では
『以前のバージョンの Office に付属していた開発者用リファレンス ヘルプ ファイルは、セットアップから削除され、
Microsoft Developer Network (MSDN) で参照できるようになります。』
だとさ (-"-)
http://technet.microsoft.com/ja-jp/library/cc178954%28v=office.15%29

VBSのヘルプは、ここから
http://www.microsoft.com/ja-jp/download/details.aspx?id=1406
scd56jp.exe をダウンロードして
実行するとインストール先を聞いてきます。OSがWinXPなら既定のフォルダは
C:\Program Files\Microsoft Windows Script\ScriptDocs
ですので、そこから script56.chm だけをお好きな所にコピーします。
他のものに用は無いので、コントロールパネルからアンインストールしてください。
または解凍ソフトをインストールして
http://win.just4fun.biz/WSH/WSH%E3%81%AE%E3%83%98%E3%83%AB%E3%83%97%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%85%A5%E6%89%8B%E6%96%B9%E6%B3%95.html
にて。

Excel2003(Office2003)は持ち合わせていないので、2002の場合なら・・
VBE上で
for i = 1 to 2
msgbox ""
next i
となっていたら、for の所にカーソルを持って行って、F1 キーを押せば
該当すると思われるものがピックアップされます。
あるいは、For まで打ち込んで、F1 とか
イミディエイトウィンドウ(Ctrl + G で出現)で、For まで打ち込んで、F1 とか
2002なら
---------------------
For キーワード
キーワード For は、次の構文で使用します。
For...Next ステートメント
For Each...Next ステートメント
...続きを読む

QMaskEdBox.Enable= False だと、BackColor が効きません

MaskEdBox の Enable を False にして、BackColor を設定すると、
BackColor が、有効になりませんでした。
解決方法を教えて下さい。

Aベストアンサー

VBのバージョンは何でしょうか?

VB6のSP3で単純に組んだプログラムでは再現しませんでした。
他の原因も考えられますのでフォームの様子や周辺のソースなど補足してください。

QVB.NETのDropDownListをReadOnlyにする方法またはEnable=Falseで字を黒くする方法

VB.NETで作成したWebページのDropDownListを変更させたくないのですが、Enable=Falseにすると文字の色が灰色になってしまって大変見にくいので、TextコントロールのReadOnlyのように、変更不可にする方法はあるのでしょうか?
おしえてください~

Aベストアンサー

> ”入力できないようにする”というのは、Enable=Falseと同じで、”現在選択されているものを他のに変更できなくする”という意味で書きました。

なるほどなるほど。

> Enable=Falseだと色が灰色になってしまいますので、どうやって
> ・Enable=Falseで黒くするのか?
> ・ReadOnlyに換わるものがあるのか?
> ということが聞きたかったのです。

となると CSS とかでも無理っぽいので、
あらかじめ ReadOnly なテキストボックスを非表示にしておき、DropDownList にロックを掛けたいタイミングで
・DropDownList を非表示にする。
・DropDownList で選択されている値を TextBox にセットする。
・TextBox を表示する
とすれば可能です。

これらの動作をクライアント側で行いたいのであれば JavaScript で記述すればいいです。
下記が参考になるかもしれません。
http://chaichan.web.infoseek.co.jp/qanda/qa6878.htm?06-08-06-13-39

> ”入力できないようにする”というのは、Enable=Falseと同じで、”現在選択されているものを他のに変更できなくする”という意味で書きました。

なるほどなるほど。

> Enable=Falseだと色が灰色になってしまいますので、どうやって
> ・Enable=Falseで黒くするのか?
> ・ReadOnlyに換わるものがあるのか?
> ということが聞きたかったのです。

となると CSS とかでも無理っぽいので、
あらかじめ ReadOnly なテキストボックスを非表示にしておき、DropDownList にロックを掛けたいタイミングで
・Dro...続きを読む

QEnabled=Falseのテキストボックスの文字の色

VB6です。
テキストボックスで、Enabled=Falseに設定されているものについては、基本的にグレーアウトで表示されると思いますが、そのままの設定で色だけを変更する方法はあるのでしょうか。

なければ、ないでいいのですが、もしあれば便利だと思いましたので、ご存知でしたら教えてください。

なお、テキストボックスではなく、ラベルを使いなさいというのはできません。

処理がめんどくさいので、すべてをコントロール配列にして一度ですべての処理をさせたいからです。

Aベストアンサー

お気に召すかわかりませんが、このような方法があります。

1.Enable=Falseを設定した後に
 「BackColor = &H80000005(通常のテキストボックスの背景色)」
を設定する。

※文字はグレーのままです。

2.「Enable=False」ではなく、「Locked = True」の設定をする。

※入力はできませんが、「右クリック→貼り付け」はできてしまいます。

いかがでしょうか?

Q[×]ボタン.Enabled = False は可能?

済みません,質問が二つあります。

1.メインフォームから,BorderStyle = 1 のダイアログフォームを Modeless で開くのですが,このフォームを右上の[×]ボタンで閉じさせたくありません。[×]ボタンをクリックしても凹まないようにし(Disabled にし),さらに表示も淡色にする方法があれば,教えていただきたく存じます。

2.テキストボックスに入力された文字列が,ファイル名として有効かどうかを簡単に判定する方法はありますか? つまり,ファイル名に「\/:,…」などが使われていたら NG,しかしパス名で使われている分には OK といった判定が簡単にできるのでしょうか?

どうかよろしくお願いいたします。

Aベストアンサー

こんにちはmaruru01です。
1.について
単に[×]で閉じないようにするなら、FormのUnLoadイベントでCancelをTrueにしてやればよいと思います。
2.について
サンプルを作ってみました。ついでにファイル名が存在するかどうかのチェックもつけました。
No.3の方が言っているように、Open For InputまたはOutputでファイルを開いてみて、エラー値で判断します。
pathNameにファイル名(フルパス)を入れて、今回の質問では、-1が返ったら、ファイル名としては無効(不正なファイル名)ということになります。
参考になれば幸いです。
では。


'ファイルの存在チェック及び、不正ファイル名チェック
Public Function NGfileName(ByVal pathName As String) As Integer

  Dim Num As Integer

  NGfileName = 0
  Err.Number = 0

  On Error Resume Next

  'inputモードでファイルの存在チェック
  Num = FreeFile
  Open pathName For Input As #Num
  If Err.Number = 0 Then
    NGfileName = 1 'ファイルが存在する
  End If
  Close #Num

  If NGfileName = 1 Then Exit Function
  Err.Clear

  'outputモードで不正ファイル名チェック
  Num = FreeFile
  Open pathName For Output As #Num
  If Err.Number <> 0 Then
    NGfileName = -1 'ファイル名が不正
  End If
  Close #Num

  If NGfileName = 0 Then Kill pathName
  Err.Clear

End Function

こんにちはmaruru01です。
1.について
単に[×]で閉じないようにするなら、FormのUnLoadイベントでCancelをTrueにしてやればよいと思います。
2.について
サンプルを作ってみました。ついでにファイル名が存在するかどうかのチェックもつけました。
No.3の方が言っているように、Open For InputまたはOutputでファイルを開いてみて、エラー値で判断します。
pathNameにファイル名(フルパス)を入れて、今回の質問では、-1が返ったら、ファイル名としては無効(不正なファイル名)ということになります。
参...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報