Excel VBA質問箱 IV

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

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


5694 / 13645 ツリー ←次へ | 前へ→

【49267】subとsubの間でデータを持ち出すには。 すず 07/5/30(水) 1:15 質問[未読]
【49269】Re:subとsubの間でデータを持ち出すには。 りん 07/5/30(水) 1:40 発言[未読]
【49306】Re:subとsubの間でデータを持ち出すには。 すず 07/5/30(水) 23:47 回答[未読]
【49308】Re:subとsubの間でデータを持ち出すには。 すず 07/5/31(木) 0:26 質問[未読]
【49349】Re:subとsubの間でデータを持ち出すには。 Jaka 07/5/31(木) 16:22 発言[未読]
【49422】Re:subとsubの間でデータを持ち出すには。 すず 07/6/4(月) 21:34 お礼[未読]

【49267】subとsubの間でデータを持ち出すには。
質問  すず E-MAIL  - 07/5/30(水) 1:15 -

引用なし
パスワード
   こんばんわ。すずです。

とても初歩的な質問で申し訳ないです。

質問です。(以下に例を記載しました。)
 「sub」をまたいだデータのやり取りの方法を教えてください。
 ボタンを使用する一連の動きの中で、
 同じ動作をするものをcallで呼び出し動作させたいのですが、
 データの持ち出しができません。

例は2種類あります。
ボタンに以下の作業(例1 or 例2)を組みました。
実行したボタンの名前を取得できるようにしたいのですが、
取得したデータをメッセージボックスに貼り付けるとき、
以下の(例1)と(例2)の場合どちらもエラーになるのです。
(エラーというより、表示文字のないダイアログが出力される。)
------
(例1)
------
Private Sub CommandButton1_Click()
Call test1
MsgBox (onShtName)
End Sub

Sub test1()
Dim onSht As Worksheet
Dim onShtName As String

Set onSht = ActiveSheet()
onShtName = onSht.Name
End Sub

------
(例2)
------
Private Sub CommandButton1_Click()
Call test1
Call test2
End Sub

Sub test1()
Dim onSht As Worksheet
Dim onShtName As String

Set onSht = ActiveSheet()
onShtName = onSht.Name
End Sub

Sub test2()
MsgBox (onShtName)
End Sub

test1の中に「MsgBox (onShtName)」を組み込んだものは
正常に取得できたので(たとえば"sheet1")、
誤字脱字に間違いはないと思ってます。

また、今の自分の知識で考えた最大限の使いまわしだと思ってますが
もし、もっと効率のいい方法があるのでしたら、重ねて教えてください。

よろしくお願い致します。

【49269】Re:subとsubの間でデータを持ち出すには。
発言  りん E-MAIL  - 07/5/30(水) 1:40 -

引用なし
パスワード
   すず さん、こんばんわ。

>質問です。(以下に例を記載しました。)
> 「sub」をまたいだデータのやり取りの方法を教えてください。
> ボタンを使用する一連の動きの中で、
> 同じ動作をするものをcallで呼び出し動作させたいのですが、
> データの持ち出しができません。

>実行したボタンの名前を取得できるようにしたいのですが、
>取得したデータをメッセージボックスに貼り付けるとき、
>以下の(例1)と(例2)の場合どちらもエラーになるのです。
シート名ではなくて?

とりあえず、アクティブなシート名を取得する方法の一つです。

コマンドボタンのマクロ例

Private Sub CommandButton1_Click()
  Dim Sdat As String '受ける変数名は引数のそれと一致していなくていい
  '
  test1 Sdat
  MsgBox Sdat
End Sub


実行する部分(標準モジュールに書いてください)
Sub test1(onShtName As String)
  'シート名
  onShtName = Application.ActiveSheet.Name
End Sub

これで、ボタンをクリックすると、それぞれアクティブになっているシート名が表示されます。
今回のように、値を一つしか返さない場合はFunctionにするのも手です。

コマンドボタンのマクロ
Private Sub CommandButton1_Click()
  MsgBox onShtName
End Sub

実働部分(標準モジュール)
Function onShtName() As String
  'シート名
  onShtName = Application.ActiveSheet.Name
End Function

【49306】Re:subとsubの間でデータを持ち出すには。
回答  すず E-MAIL  - 07/5/30(水) 23:47 -

引用なし
パスワード
   りんさん、こんばんわ。

夜か、朝の返信になってます。すみません。

>シート名ではなくて?
すみません。シート名です。誤打です。

コピペして実施してみると実際に意のとおりに動作するのですが、
渡す値が2つある場合は以下はどのような記載になるのでしょうか?

>Sub test1(onShtName As String)

重ね重ねすみません。よろしくお願いします。

【49308】Re:subとsubの間でデータを持ち出すには。
質問  すず E-MAIL  - 07/5/31(木) 0:26 -

引用なし
パスワード
   りん様、皆様

こんばんわ、すずです。

【49306】の投稿種別を間違えました!すみません!
「質問」でお願いします。

【49349】Re:subとsubの間でデータを持ち出すには。
発言  Jaka  - 07/5/31(木) 16:22 -

引用なし
パスワード
   早起きりんさん、おじゃまします。
りんさんのコードを利用。
りんさんほど細かく書いてないです。

Private Sub CommandButton1_Click()
  Dim Sdat As String '受ける変数名は引数のそれと一致していなくていい
  '
  test1 Sdat, "あああ"
  MsgBox Sdat
End Sub

Sub test1(onShtName As String, St As String)
  'シート名
  onShtName = Application.ActiveSheet.Name & St
End Sub


Private Sub CommandButton1_Click()
  aaa = "ああ"
  bbb = "いい"
  MsgBox onShtName(aaa, bbb)
End Sub

Function onShtName(cc, dd) As String
  'シート名
  onShtName = Application.ActiveSheet.Name & cc & dd
End Function

【49422】Re:subとsubの間でデータを持ち出すには。
お礼  すず  - 07/6/4(月) 21:34 -

引用なし
パスワード
   Jakaさん、りんさんへ

すずです。返信遅くなってしまって申し訳ありません。
今は同じ動作は部品化して使い回しを試みてます。
教わった部分について充分とは言えないかもしれませんが理解しアレンジも施せました。

ありがとう御座いました。

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