アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロの知識はほぼなく、調べながらエクセルの入力用のユーザーフォームを作りましたが、うまく作動しません。

UserForm1
~~~~~~~~~~~~~~~~~~~~~~~~~
Option Explicit
Private Declare Function ReleaseCapture Lib "user32" _
() As Long

Private Sub UserForm_Initialize()
Me.Show
End Sub
Private Sub Button_cxl_Click()
Me.Hide
End Sub
Private Sub ok_Click()
Dim RowNum As Long
Dim Ctrl As Control

RowNum = Cells(Rows.Count, 1).End(xlUp).Row + 1

Cells(RowNum, 1).Value = Me.txt_date
Cells(RowNum, 2).Value = Me.txt_guest
Cells(RowNum, 3).Value = Me.txt_person
Cells(RowNum, 4).Value = Me.txt_begin
Cells(RowNum, 5).Value = Me.txt_finish

For Each Ctrl In Me.Controls
If Ctrl.Name Like "txt*" Then
Ctrl.Value = ""
RowNum = 0
End If
Next Ctrl
Me.Hide
ReleaseCapture
UserForm2.Show vbModal

End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~

UserForm2
~~~~~~~~~~~~~~~~~~~~~~~~~
Option Explicit
Private Declare Function ReleaseCapture Lib "user32" _
() As Long
Private Sub UserForm_Initialize()

End Sub
Private Sub ButtonEnd_Click()
Unload Me
UserForm1.Hide
End Sub

Private Sub ButtonNext_Click()
Unload Me
ReleaseCapture
UserForm1.Show vbModal

End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~

Module1
~~~~~~~~~~~~~~~~~~~~~~~~~
Sub ユーザーフォーム()
UserForm1.Show
End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~


UserForm1を開き、Button_cxlで閉じず、もう一度Button_cxlをクリックで閉じる。
UserForm1を開き、Button_okでUserForm2を出し、ButtonEndをクリックでUserForm1にもどる(1と2を数度行き来しても同じ)
UserForm1を開き、Button_okでUserForm2を出しButtonNextをクリックでUserForm1にもどりButton_cxlをクリックで閉じず、もう一度クリックしても閉じず、三回目で閉じる。

現状、エクセルを開いた直後のみで発生してます。
一度ユーザーフォームを出し、閉じたあとは意図通り動き、再度エクセルを開くまで発生しません。

ちなみにUserForm2の

Private Sub ButtonEnd_Click()
Unload Me
UserForm1.Hide
End Sub

部分の、UserForm1.HideをUnload UserForm1にすると、「オブジェクト変数または With ブロック変数が設定されていません」と出てデバックでModule1の

UserForm1.Show

が黄色になります。

どこが悪いか教えてください。

A 回答 (1件)

詳しい解説をしようとする当方のボキャブラリー不足の為自分が混乱してしまいそうなので(^-^;)、とりあえず解決策の提案のみですが・・・




(1)UserForm1内の
Private Sub UserForm_Initialize()
Me.Show
End Sub

の三行を削除

(2)UserForm2のButtonEnd_Click内の
UserForm1.Hide を
Unload UserForm1 に変更
(※質問文内ではエラーになったと記載がありましたが、(1)の修正を行うことによってエラーは解消されるかと思います)

完璧に不具合解消されるかは分かりませんが、とりあえず上記2点の修正でどうでしょうか。。
    • good
    • 0
この回答へのお礼

完璧に意図通り動きました。
ありがとうございます。

どこかからかコピペし、動作には関係ないと思っていた構文だったので、完全に無視してました。
よく見ればInitializeって書いてありますよね(汗

お礼日時:2013/11/27 09:24

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