【最大10000ポイント】当たる!!質問投稿キャンペーン!

VB初心者ですが質問させていただきます。
現在
Private Sub CommandButton1_Click()
で呼び出されている処理を、
コマンドラインからstart~.exeと入力して呼び出される(実行される)ようにするにはPrivate Subにてどのように記載してexeファイルを作成すればよいでしょうか??

何分初心者な者ですので概念に間違いがありましたら申し訳ございません。

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

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

A 回答 (3件)

>Sub Main()


>Call Command1_Click
>End Sub
>とか出来なかったっけ?
できるはずがない。
Privateの範囲を考えればわかるはず

Public Sub Command1_Click()
にして
sub min側で
Call Form1.Command1_Click
呼び出せば動かないことはないけどイレギュラー的な
使い方すぎる。
それ考えれば
Command1_Clickイベント内をサブルーチン(関数化)して
それをsub mainとCommand1_Clickイベントから
呼び出して使うのが本来でしょう。
    • good
    • 0
この回答へのお礼

論理的/具体的なご回答ありがとうございます。
解決いたしました。

お礼日時:2007/01/03 19:28

VB.NETでも通用する (=Option Strict On、Option Explicit On制約を付ける) 考え方をするならば…



1 CommandButton1_Click() の中で行なっている処理を、別のメソッドにまとめる。
2 Main()、および CommandButton1_Click() から、1で作成したメソッドを呼ぶようにする

…というのは、いかがでしょう?
    • good
    • 0
この回答へのお礼

参考意見ありがとうございます。
自分でも色々とためしてみます。
貴重なご意見ありがとうございました。

お礼日時:2007/01/03 15:46

Sub Main()


Call Command1_Click
End Sub

とか出来なかったっけ?

この回答への補足

試してみましたが、コンパイルエラー
"SubまたはFunctionが定義されていません"
と表示されます。

自分でも色々と試してみたいと思います。

補足日時:2007/01/02 23:59
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。

QエクセルVBAのコンパイルエラー

下記VBAでコンパイルエラーを起こして進みません
解消法をご教授いただけると幸いです

やりたいこととしては
ボタンで任意のタブ区切りのテキストを指定し
特定のシートに値をコピーすることです

----
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim FileN As String
Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※)
FileN = Application.GetOpenFilename("テキストファイル,*.txt")
If FileN <> "False" Then
Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True
End If
Set Sh = Nothing
End Sub
----

下記VBAでコンパイルエラーを起こして進みません
解消法をご教授いただけると幸いです

やりたいこととしては
ボタンで任意のタブ区切りのテキストを指定し
特定のシートに値をコピーすることです

----
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim FileN As String
Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※)
FileN = Application.GetOpenFilename("テキストファイル,*.txt")
If FileN <> "False" Then
Workbooks.OpenText Filename:=FileN, StartRow:=1,...続きを読む

Aベストアンサー

#2、cjです。#2、補足欄へのレスです。

' ' ----
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet
  Dim FileN As String

  Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※)
  FileN = Application.GetOpenFilename("テキストファイル,*.txt")
  If FileN <> "False" Then
    Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True
    ActiveSheet.Cells.CurrentRegion.Copy Destination:=Sh.Cells(Rows.Count, "A").End(xlUp).Offset(1)
    ActiveWorkbook.Close False
  End If
  Set Sh = Nothing
End Sub
' ' ----xl2010で動作確認済

原形を残して、2行追加するだけです。
シートの何処に出すか、判りませんので、とりあえず、A列を基準に最下行を採り、
最下行の一行下に出力する場合の例です。必要に合わせて応用してください。
(未使用の場合は2行め以下に出力します。)

同じ処理をするのに、方法は色々と(パッと思いつくだけでも5通り)ありますが、
テキストデータをそのまま貼るだけならば、この方法でも、
十分に一般的で、読む人に理解され易いい、と言えるもの、と私は思います。

因みに、
CommandButton1が、シート上に配置したActiveX コントロールだった場合は、
CommandButton1 のプロパティ TakeFocusOnClick を False に設定するのがベターです。
そうしておいた方が、何かとエラーが起き難くなります。
 デザインモード(三角定規みたいなアイコン)
 ↓
 CommandButton1を右クリック
 ↓
 プロパティ
 ↓
 TakeFocusOnClick を False
という手順です。

以上です。

#2、cjです。#2、補足欄へのレスです。

' ' ----
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet
  Dim FileN As String

  Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※)
  FileN = Application.GetOpenFilename("テキストファイル,*.txt")
  If FileN <> "False" Then
    Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True
    ActiveSheet.Cells.CurrentRegion.Copy Desti...続きを読む


人気Q&Aランキング