Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


524 / 2272 ツリー ←次へ | 前へ→

【11299】変数の指定方法 さぶちん 09/12/16(水) 11:44 質問[未読]
【11300】Re:変数の指定方法 小僧 09/12/16(水) 19:11 発言[未読]
【11302】Re:変数の指定方法 さぶちん 09/12/16(水) 20:18 質問[未読]
【11303】Re:変数の指定方法 小僧 09/12/16(水) 22:28 発言[未読]
【11304】Re:変数の指定方法 Pirorin 09/12/17(木) 1:49 発言[未読]
【11305】Re:変数の指定方法 Pirorin 09/12/17(木) 21:28 発言[未読]
【11306】Re:変数の指定方法 hatena 09/12/17(木) 23:30 回答[未読]
【11307】Re:変数の指定方法 さぶちん 09/12/18(金) 13:17 お礼[未読]

【11299】変数の指定方法
質問  さぶちん E-MAIL  - 09/12/16(水) 11:44 -

引用なし
パスワード
   Dim x ,z
Dim a1,a2,a3,a4,a5・・・・・a16

上記の変数があり

axを 求めたい

x が 1 だったら z=a1
x が 2 だったら z=a2
x が 3 だったら z=a3
x が 4 だったら z=a4
x が 5 だったら z=a5
・・・・・
x が 16 だったら z=a16

64ヶ所あるので If で組むと非常に長くなってしまう。
z = a & x の形で a(x)   a & (“x”)・・・・・・・?
ズバリ x で ax を指定したい
この部分どう処理したら良いか教えて下さい。
宜しくお願い致します。

【11300】Re:変数の指定方法
発言  小僧  - 09/12/16(水) 19:11 -

引用なし
パスワード
   ▼さぶちん さん:
こんにちは。

配列を使っても良いのであれば

>Dim x ,z
>Dim a1,a2,a3,a4,a5・・・・・a16

Sub Test()
Dim x As Long
Dim z As String
Dim a(1 To 16) As String
  
  a(1) = "リンゴ"
  a(2) = "ばなな"
  a(3) = "なし"
  '…
  '…
  '…
  
  
  x = 2
  z = a(x)
  
  MsgBox z
  
End Sub

こんな感じでしょうか。

【11302】Re:変数の指定方法
質問  さぶちん E-MAIL  - 09/12/16(水) 20:18 -

引用なし
パスワード
   小僧さんこんばんわ
お世話になります

Dim a(1 To 16) As String
の配列では駄目なんです

dim a1,a2,a3,・・・・
で別々なんです。
すみません。
宜しくお願い致します。

【11303】Re:変数の指定方法
発言  小僧  - 09/12/16(水) 22:28 -

引用なし
パスワード
   ▼さぶちん さん:
こんばんは。

>Dim a(1 To 16) As String
>の配列では駄目なんです

となるとVBAでは無理ではないかと思われます。

何か方法があるのかもしれませんが
少なくとも当方にその知識はないです。
申し訳ありません。

【11304】Re:変数の指定方法
発言  Pirorin  - 09/12/17(木) 1:49 -

引用なし
パスワード
   "指定したい"という意味が不明確なのですが、こういうことなのですか?

Function z(x As Integer) As String
  z = "a" & x
End Function

結果はイミディエイトウィンドウで確認しただけです。
 ?z(16)
で、a16が関数から返されます。

【11305】Re:変数の指定方法
発言  Pirorin  - 09/12/17(木) 21:28 -

引用なし
パスワード
   提示した関数の使用例です。

Function z(x As Integer) As String
  z = "a" & x
End Function

Sub Test()
  Dim x As Integer
  
  On Error GoTo ER_HA
  x = InputBox("数値入力")
  MsgBox (z(x))
  
ER_HA:
End Sub

【11306】Re:変数の指定方法
回答  hatena  - 09/12/17(木) 23:30 -

引用なし
パスワード
   >64ヶ所あるので If で組むと非常に長くなってしまう。

a1 〜 a16 までを変数を呼び出す場所が64ヶ所あり、
同じ長いコードを何度も繰り返すのを避けたいという意味なら、

Dim x As Long, z
Dim a1, a2, a3, a4, a5

Function geta(i As Long)
  Select Case i
  Case 1: geta = a1
  Case 2: geta = a2
  Case 3: geta = a3
  Case 4: geta = a4
  Case 5: geta = a5
  End Select
End Function

Sub Hoge()

  a1 = "あ"
  a2 = "い"
  a3 = "う"
  a4 = "え"
  a5 = "お"

  x = InputBox("1から5までの数値を入力")
  
  z = geta(x)

  MsgBox z

End Sub


外していたらスルーしてください。

【11307】Re:変数の指定方法
お礼  さぶちん E-MAIL  - 09/12/18(金) 13:17 -

引用なし
パスワード
   皆さん色々有難う御座います。

テキストBOXの場合
Me.Form.Controls("a" & x) で済み
配列変数ですと a(x) で済むのですが
以上の様な事を望んでいたのですが、
無い様なので、
約4000行になってしまいましたが、
時間が無いので if文 で作成しました。

後でじっくり考えます。
有難う御座いました。

524 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078196
(SS)C-BOARD v3.8 is Free