今だけ人気マンガ100円レンタル特集♪

エクセルのVBでユーザーフォームをコピーしたいのですが。
例えば、「ユーザーフォーム1」と「ユーザーフォーム2」を同じ形式で作成し、リンクするセルのみを変えたいのです。
今は、それぞれのコントロールをコピーしてます。
いい方法ありますか?というか可能ですか?

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

A 回答 (2件)

●コピーの方法をもう少し詳しく書くと、


(1)まずUserForm1(ユーザーフォームを挿入した時のデフォルトのオブジェクト名)は完成したフォームとします。
(2)UserForm1を選択して、フォーム上の何も無い所を右クリック、すべて選択。
(3)コントロールのある所にマウスを移動し、右クリック、コピー。
(4)次にユーザーフォームを挿入(UserForm2が挿入されたとします)
(5)UserForm2を選択して、フォーム上の何も無い所を右クリック、貼り付け。

これでできるように思いますが・・・(Excel2000、Excel97で確認)


●エクスポートの方法としては、
(1)まずプロジェクトエクスプローラを表示しておきます。
(2)プロパティウインドウも表示しておきます。(表示→プロパティウインドウ)
(3)プロジェクトエクスプローラでUserForm1を選択。
(4)右クリックし、ファイルのエクスポートを選択。
(5)どこかのフォルダに保存します。(UserForm1.frmで保存したとします)
(6)UserForm1のプロパティウインドウのオブジェクト名を例えばUserForm1aに変えます。
(7)プロジェクトエクスプローラで右クリックし、ファイルのインポートを選択。
(8)保存したUserForm1.frmを選択。開くボタンでインポートされます。
(9)プロパティウインドウで、インポートされたユーザーフォームのオブジェクト名を例えばUserForm1bに変えます。

以上で同じフォームが2つできたと思いますが・・・(これもExcel2000、Excel97で確認)
    • good
    • 0
この回答へのお礼

今度はうまくいきました。
まだまだ未熟者のため、きちんと操作できてませんでした。
わからない事が出てきたら、また質問させて下さい。
本当にありがとうございました。

お礼日時:2001/10/05 20:10

>エクセルのVBでユーザーフォームをコピーしたいのですが。


『VBEのデザインモードでコピー』として書きます。(マクロを実行することによってフォームをコピーしたい?)

コピーするなら、新しいユーザーフォームを挿入しておき、元のフォームを選択し、何もないところで右クリック、『すべて選択』でコントロールをコピーし新しいフォームに貼り付ければ1回の処理で済みます。ControlSourceは当然、個別に設定しなおします。

または、
(1)プロジェクトエクスプローラでコピーしたいフォームを選択し、右クリックし『ファイルのエクスポート』
(2)再度右クリックし『ファイルのインポート』で元のフォームを選択
ではダメでしょうか。ただし、同一ブックに同一名のフォームを作ることになるので、一時的に元のフォームのオブジェクト名を変更して(2)を実行することになります。

Excel2000で確認済です。ご参考に。
    • good
    • 0
この回答へのお礼

さっそくのお答えありがとうございます。
『すべて選択』の方法を試してみたのですが、コピーはできましたが、
新しいユーザーフォームへ貼り付けできません。
なぜでしょうか?
『プロジェクトエクスプローラ』の方法は、ファイル選択画面が出てきた後、どうしたらいいかわかりません。
教えていただけますか?

お礼日時:2001/10/04 08:27

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Qエクセルのユーザーフォームをコピーしたい。

エクセルの2000です。VBAで作ったユーザーフォーム
のフォームを他のブックのVBAにコピーをしたいのですが可能でしょうか?可能であれば手順をお教え頂ければ
有りがたいです。

Aベストアンサー

そのVBAが含まれているブック、そして、コピーしたい先のブックを開いた状態でAlt+F11で
エディターが開きます。

右にプロジェクトのメニューが出ていますので、
そこでユーザーフォームを掴んで、コピー先のブック
へドラッグすればコピーできます。

QExcel VBAで、ユーザーフォームの値を、モジュールで使用したい。

VBA初心者です。(おそらく)基本的な質問で、申し訳ありません。
ユーザーフォーム1には、テキストボックス1とコマンドボタン1が配置されているとします。

Sub TEST ()
Dim N
Userform1.Show
MsgBox N
End Sub

Private Sub CommandButton1_Click()
Dim N
N = TextBox1.Text
UserForm1.Hide
End Sub

Sub TESTを実行した時に、ユーザーフォーム1からNの値を引き継ぐには、どうしたら良いのでしょうか?よろしくお願いします。

Aベストアンサー

'モジュールに変数宣言(グローバル変数)
'Public 宣言すると他のモジュールやフォームと
'共有できる変数になります。
Public AA As String

'sample
'A1 を実行する。

Sub A1()
Call A2
AA = InputBox("input", , AA)
End Sub

Sub A2()
AA = InputBox("input", , AA)
End Sub

Qエクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?

エクセルのVBAでユーザーフォームの中に
テキストボックスとラベルがあります。

ラベルの縦幅とテキストボックスの縦幅は
同じです。(文字1行分くらい)

そのテキストボックスの左隣にラベルを置いて、
項目名的なものを表示させたいと思うのですが
ラベルの値が上に寄っているので、垂直方向に
中央揃えさせたいのですが、設定の仕方が
分からず困っています。

ちなみにエクセルはXPで、VBAは詳しくありません。
詳しくないけど調べながらちょっとずついろいろ
作業しています。

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

Aベストアンサー

文字の上下中央設定は、確かにできませんね。
代案ですが、次のような操作はいかがでしょうか。

1.双方を選択した状態でプロパティを表示し、AutuSize の値を True にする。
2.前回のようにコントロールの位置を上下中央で揃える。
3.各コントロールの長さ(幅)や文字サイズを調整する。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QVBA コンボボックスで選んだ値を取得するには

ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。

コンボボックスのコードで
Private Sub ComboBox1_Change()
moji1 = ComboBox1.Text
Range("A1").Value = moji1
のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。

マクロ1にて、上記と同じ
Range("A1").Value = moji1
というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。

原因をご存知の方はお教えください。

Aベストアンサー

原因については下記を参考にしてください。
http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml

QVBAフォームのテキストボックスに初期値を表示するには?

VBAのフォームのテキストボックスに、初期値としてフォームを開いた当日の日付を表示したいのです。
開いたときは今日の日付が既に表示されていて、必要に応じて書き換える、そんなふうにしたいのですが。

Aベストアンサー

こんにちは。

こういうことかな?

Private Sub UserForm_Initialize()
  TextBox1.Text = Format$(Date, "yy/mm/dd")
End Sub

Qユーザーフォームに入力したデータを保持する方法

VBA初心者です。いろいろ調べて徐々に進められていますが、、
こちらもなかなか見つからなかったので質問させていただきます。

現在、ユーザーフォームにテキストボックスをいくつか配置し、
さまざまな計算などをさせて、最終的にエクセルシートに反映させる。
といったことが出来るようにプログラムをしています。

ユーザーフォームのテキストボックスに一度入力したものを、
エクセルシートを閉じるまで残すことはできるでしょうか?

一度、×ボタンで閉じてしまうと、次に呼び出したときには初期の状態になってしまいます。

ユーザーフォームに入力し、エクセルシートで確認、
その後 再度ユーザーフォーム呼び出して修正する
といった作業をするために、一度入力したものが消えないようにしたいです。

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

Aベストアンサー

閉じるボタンで閉じるとき、Hideで閉じればいいだけの様な気がします。

UserFormのモジュールに記述します。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then
 Cancel = True
 Me.Hide
End If
End Sub

Qユーザーフォームをコピーするには?

エクセルでVBEからユーザーフォームを作りそれをコピーし別のエクセルファイルで使いたいのですがどうすればよいでしょうか?

Aベストアンサー

[プロジェクトエクスプローラ]で
そのユーザーフォームを右クリック。

[ファイルのエクスポート]でfrmファイルとして保存する。

それを別なマクロで読み込むときは
[ファイルのインポート]


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング