Excel VBA質問箱 IV

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

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


8075 / 13644 ツリー ←次へ | 前へ→

【35230】シートの文字をプロシージャに書き込み dona 06/2/24(金) 1:59 質問[未読]
【35231】Re:シートの文字をプロシージャに書き込み dona 06/2/24(金) 2:07 質問[未読]
【35233】Re:シートの文字をプロシージャに書き込み ichinose 06/2/24(金) 7:14 発言[未読]
【35234】Re:シートの文字をプロシージャに書き込み dona 06/2/24(金) 7:32 お礼[未読]
【35274】Re:シートの文字をプロシージャに書き込み dona 06/2/24(金) 20:49 お礼[未読]

【35230】シートの文字をプロシージャに書き込み
質問  dona  - 06/2/24(金) 1:59 -

引用なし
パスワード
   今回、初めて投稿させていただきますdonaと申します。
仕事でVBAを使用することになり、わからない点が出てきたので質問させていただきます。

エクセルのシートの文字を、プロシージャ内に貼り付けるような事は可能でしょうか?

例:エクセルシート
  A
1 abc
2 def
3 ghi
と、あるものをプロシージャ内に
Sub test ()

  abc
  def
  ghi

End Sub

といった様な動作を行いたいのですが何か良い方法がありましたら教えていただきたいと思います。

掲示板などに書き込むのが初めてなので、いろいろ至らない点が多々あると思いますがよろしくお願いします。

【35231】Re:シートの文字をプロシージャに書き込み
質問  dona  - 06/2/24(金) 2:07 -

引用なし
パスワード
   すいません、説明が足らないと思い追加させていただきます。

"abc"と"def""ghi"は、変数ではなく、プロシージャとして扱いたいです。

モジュールに、あらかじめ"abc""def""ghi"をプロシージャとして登録しておき
Sub test ()

abc
def
ghi

End Sub
この、"trst"が実行された時に、順次呼び出される動作にしたいです。
分かりづらい説明で申し訳ありませんが、よろしくお願いします。

【35233】Re:シートの文字をプロシージャに書き込み
発言  ichinose  - 06/2/24(金) 7:14 -

引用なし
パスワード
   ▼dona さん:
おはようございます。

Application.Runメソッドを使用すると可能です。

新規ブックの標準モジュールに

'==================================================================
Sub main()
  Dim pnmarray As Variant
  Dim idx As Long
  On Error Resume Next
  Range("a1:a3").Value = Application.Transpose(Array("abc", "def", "ghi"))
  '↑サンプルデータの作成
  pnmarray = Range("a1", Cells(Rows.Count, "a").End(xlUp)).Value
  For idx = LBound(pnmarray, 1) To UBound(pnmarray, 1)
    Err.Clear
    Application.Run pnmarray(idx, 1)
    If Err.Number <> 0 Then
     MsgBox Err.Description
     End If
    Next
  On Error GoTo 0
End Sub
'==================================================================
Sub abc()
  MsgBox "abc"
End Sub
'==================================================================
Sub def()
  MsgBox "def"
End Sub
'==================================================================
Sub ghi()
  MsgBox "ghi"
End Sub


でmainを実行してみて下さい

【35234】Re:シートの文字をプロシージャに書き込み
お礼  dona  - 06/2/24(金) 7:32 -

引用なし
パスワード
   ▼ichinose さん:
おはようございます!

お答え頂きありがとうございます。

今日、さっそく実践してみたいと思います。
結果は、またこちらで報告させていただきます。

本当にありがとうございます。

【35274】Re:シートの文字をプロシージャに書き込み
お礼  dona  - 06/2/24(金) 20:49 -

引用なし
パスワード
   ▼ichinose さん:
こんばんは。今朝お答えを頂いたdonaです。

今日さっそく実践してみました。
教えていただいたコードを実行した後、自分で少し変更してみました。

変更した点は、
===============================================================
 Range("a1:a3").Value = Application.Transpose(Array("abc", "def", "ghi"))
===============================================================
の部分を
===============================================================
Range("a1:a3").Value = Application.Transpose(Array((a1.Text, (a2.Text), (a3.Text)))
===============================================================
のように変更してみました。

"abc""def""ghi"の部分の関数は、任意で変更されるのでこのようにしました!
VBAの文法?的に、正しいのかはわからないですが・・・

今度は、これをランダムで選択できるようにしたいと思います。
また、行き詰まったら質問させていただきたいと思います。

今回は本当にありがとうございました。(誤字脱字など、あるかと思いますが、ご容赦ください)

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