[[20200715051835]] 『MsgBoxの』(謙児) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『MsgBoxの』(謙児)

お世話になります。

質問です。よろしくお願いいたします。

1つ目は、フォームコントロールで作成しましたボタン"転記"を押しますと、
下記コード「請求月は、当月締め日になっていますか?」が出まして
はい、を押しますと次のコード「請求書の支払合計が未入力です」と
出ます。入力が終わりますと次のコードに進む方法を教えて頂けますか?

(現状は、入力が終わると"転記"ボタンを押せば、当然ですが、最初から
コードが走る為に「請求月は、当月締め日になっていますか?」と出ます。
入力する人は、また同じ文言が出ている、また、はいと押さなければなら
ないとわずらしさを感じるためです。)

If Sheets("請求書入力").Range("c5") <> "" Then

    If MsgBox("請求月は、当月締め日になっていますか?", vbYesNo) = vbNo Then
        Exit Sub
    End If
   End If

  If Sheets("請求書入力").Range("c6") = "" Then
        MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下
     さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("b10") = "" Then
        MsgBox "勘定科目等が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If
 
 後、xxが未入力と続きますが。

以上ですが、ご教授のほどよろしくお願いいたします。

なお、見出し:MsgBoxの になっていますが最初MsgBox とニックネーム
を入れましたが、更新されず 何故と思いながら見出しが足らないのかなあ
と思ってMsgBoxの件と入れようとMsgBoxの と入れたところでいきなり
更新されましたので、MsgBoxの 迄か入っていなくてすみませんでした。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


一つ忘れていました。
下記コードの内容を私としては、試行錯誤して作りました。

If Sheets("請求書入力").Range("d6") <> o Then

        MsgBox "支払金額と各勘定科目の金額に差額が出ています" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

質問は、請求書入力 の伝票を印刷時、d6の差額表示を印刷時に非表示にする方法を
教えて頂けますか?
(謙児) 2020/07/15(水) 06:44


「請求月は、当月締め日になっていますか?」は、「請求月日は当月締め日になっていません」&「確認してください」と 判断方法を変更すれば?
Yesを選べば、どんな日付でも処理続行可能とするのですか?

すべての条件処理を未入力又は入力間違いにできませんか?

(サンダー) 2020/07/15(水) 07:35


■1
とりあえず、アレ!?動きが変だなと思ったら、まずはステップ実行して自己検証してみてください、

 ステップ実行については↓で説明済のため割愛。
[[20200706182510]]   『データのみの転記』(謙治)

■2
部分的にしか示されていないので違うのかもしれませんが、↓みたいなことがやりたいのだとして、★部分について、1回チェックしてもらったらもう変えないから、チェックをスキップさせたいということでしょうか?

 「転記」ボタンを押したら
    もしも、(請求月があっているか確認させて)OKなら  ★

       [項目:支払合計]が空欄かチェック
       [項目:勘定科目等]が空欄かチェック
             ・
             ・
       [項目:○○]が空欄かチェック

       もしも、空欄の項目が1つでもあれば
            空欄になっている項目を提示してプログラム終了
       そうでなければ
            転記処理を実行して
            次の入力のために各項目をクリア   
       もしもの話はおしまい
    もしもの話はおしまい
 「転記」ボタンを押した時の処理はここまで

■3
>d6の差額表示を印刷時に非表示
どうやって印刷しているのかわかりませんが、マクロで印刷までしてるなら、印刷するときだけフォント色を白にしたらどうですか?

(もこな2) 2020/07/15(水) 07:49


皆様、ありがとうございます。
こんなに早く回答を頂くとは、ありがたいです。
皆様の提案、確認の必要が
あります。会社から帰って確認、お返事致しますので、
申し訳ありませんが、お待ちください。

(謙治) 2020/07/15(水) 09:13


改めまして
サンダー様
ご解答を有難うございました。
>当月締め日になっていますか? 
これは、再確認をさせる為で入力者は、正しい日付を入力している人もいますので、最初から否定の文言は、相手に失礼な気がするのですが。折角言って頂いたのにすみません。

もこな2様
ご解答を有難うございます。

■1、承知いたしました。
■2、>↓みたいなことがやりたいのだとして、★部分について、1回チェッ
   クしてもらったらもう変えないから、チェックをスキップさせたいと
   いうことでしょうか?
   はい、その通りです。
 
   >もしも、空欄の項目が1つでもあれば

      >空欄になっている項目を提示してプログラム終了

   その通りです。日付の確認時、間違いなかったら次のスッテプに行き、
   空欄があれば入力します。そして以降のステップで空欄がなければ他の
   シートに転記がされるようにして頂きたいのです。

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

   

(謙児) 2020/07/15(水) 17:23


それなら、こんな感じにすればよいとおもいます。
 請求月確認フラグ ←★モジュールレベル変数

 「転記」ボタンを押したら
    もしも、「請求月確認フラグ」が偽だったら
       もしも、(請求月があっているか確認させて)OKなら
            「請求月確認フラグ」を真に変更
       そうじゃなければ
             注意メッセージを表示して
             プログラム終了
       もしもの話はおしまい
    もしもの話はおしまい

    [項目:支払合計]が空欄かチェック   →空欄だったらその項目を覚えておく
    [項目:勘定科目等]が空欄かチェック →空欄だったらその項目を覚えておく
           ・
           ・
    [項目:○○]が空欄かチェック       →空欄だったらその項目を覚えておく

    もしも、覚えた項目があれば(=空欄項目あり)
       空欄になっている項目を提示してプログラム終了
    そうでなければ
       転記処理を実行して
       次の入力のために各項目をクリア   
    もしもの話はおしまい

 「転記」ボタンを押した時の処理はここまで

【モジュールレベル変数とは】
http://officetanaka.net/excel/vba/variable/05.htm

【研究用コード】

    Option Explicit
    Dim ふらぐ As Boolean

    Sub ボタン1_Click()
        If ふらぐ = False Then
            MsgBox "初回です"
            ふらぐ = True
        Else
            MsgBox "初回じゃないです"
        End If

    End Sub

また、静的変数にしてもいいかもですね。
http://officetanaka.net/excel/vba/variable/10.htm

(もこな2 ) 2020/07/15(水) 18:42


もこな2様
私に勉強して覚えて頂きたい気持ちがわかりますので下記のように調べたのですが、素人の私には、各コードの意味、プロシージャへの結びつき等(うまく説明が出来ませんが)わかりません。

モジュールレベル変数及び静的変数のサイトを読みました。
サイトを読んでいる時は、なんとか、なんとかは、違うモジュールに対しても
使用できる、又は使用出来ない等、言っていることが少しわかるのですが、
そのなかの色々なコードがわからないし並べ方がわかりません。

MsgBox の動きもこうこうなっているんだと少し理解が出来ますが、
各コードの意味が、知識がない為に、プロシージャをまねしてラーンすると
出来るのですが、自分で作る場合にはどうしてよいのかわかりません。

研究用コードにしてもラーンすると流れはわかるのですが、それを応用して
コードを勝手にあてはめて結局は、エラーが出ます。
どう直してよいかわかりません。

諦めるには嫌いですが。どうしていいのかわかりません。申し訳ありません。

(謙児) 2020/07/15(水) 21:18


疑似コードまで提供しているので、あとは当てはめるだけだと思いますが、難しいですかね。
いきなり全部をコード化するのが難しいのであれば、分かる部分だけでもコード化してみてください。

現状だと、どの部分で詰まっているのかよくわからないのでアドバイスできそうなことがありません。

(もこな2) 2020/07/15(水) 22:06


もこな2様

Sub ボタン1_Click()

        If ふらぐ = False Then
            MsgBox "初回です"
            ふらぐ = True
        Else
            MsgBox "初回じゃないです"
        End If
    End Sub

上記コード条件を基に、 MsgBox "初回じゃないです"のところに次のステップ(下記コード)をいれましたら、基に戻らず(MsgBox("請求月は、当月締め
日になっていますか?")先に進んでいくかと思いました。

If Sheets("請求書入力").Range("c6") = "" Then

        MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下さい"

下記コードの内容は、
請求月は、当月締め日になっていますか?"が終わって、次のステップC6が未入力です。に
続くようにしたつもりがうまく行きません。

If Sheets("請求書入力").Range("c5") <> "" Then

    If MsgBox("請求月は、当月締め日になっていますか?", vbYesNo) = vbNo Then

  ’ここでExit Subを入れて"いいえ"をクリックしましたら
 ’止まったままです。Exit SubをはずせばいきなりC6が未入力となり
 ’"いいえ"をクリックした後での修正が出来ません。 

 If Sheets("請求書入力").Range("c6") = "" Then
        MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下さい"

        Exit Sub
    End If
   End If

If MsgBox("請求月は、当月締め日になっていますか?", vbYesNo) = vbNo Then ここで
いいえ とすれば次のステップC6の未入力に進みます。
いいえと押せば一旦止まって入力後にC6の未入力に進みたいのですが、何のコードをいれたらいいかわかりません。

False Then とか = True をどこかに入れないといけないのでしょうか?

(謙児) 2020/07/16(木) 08:04


 >一旦止まって入力後に
 Range("c5") に戻って入力したらということでしょうか。
 <> "" の意味は理解できていますか。空白の時もありますか。
 >False Then とか = True をどこかに入れないといけないのでしょうか? 
 使用しません。
 If Sheets("請求書入力").Range("c6") = "" が条件式です。
 Range("c6") = ""だったらTrue、入力済だったらFalseということです。
 Trueなら前に戻りFalseなら次へ進むというふうに分岐させるのです。

 >フォームコントロールで作成しましたボタン"転記"を押しますと
 ボタンに登録したコードを提示することはできますか。
 >入力が終わりますと次のコードに進む方法を教えて頂けますか? 
 冒頭のコード見直しているところです。
 しばらく待ってください。  

(KLY) 2020/07/16(木) 16:01


KLY様
有難うございます。

>Range("c5") に戻って入力したらということでしょうか。
はい。

><> "" の意味は理解できていますか。空白の時もありますか。
はい、理解できています。C5が、ブランク以外ならばという意味で記入しました。

<> "" の前のコードは、
  If Sheets("請求書入力").Range("c5") = "" Then

        MsgBox "請求書年月日が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If
  として入力の確認をっています。

そして次のステップで"請求月は、当月締め日になっていますか?" と再確認をしています。

ボタンに登録したコードを提示することはできますか。 はい、下記の通りです。

Sub さんぷる壱()

     Application.ScreenUpdating = False

        Dim MyRNG As Range
        Dim i As Long
        Stop 'ブレークポイントの代わり

     If Sheets("請求書入力").Range("C3") = "" Then
        MsgBox "担当名が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
      End If

    If Sheets("請求書入力").Range("C4") = "" Then
        MsgBox "支払先名が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("c5") = "" Then
        MsgBox "請求書年月日が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("c5") <> "" Then
    If MsgBox("請求月は、当月締め日になっていますか?", vbYesNo) = vbNo Then
        Exit Sub
    End If
   End If

    If Sheets("請求書入力").Range("c6") = "" Then
        MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("d6") <> o Then
        MsgBox "支払金額と各勘定科目の金額に差額が出ています" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("b10") = "" Then
        MsgBox "勘定科目等が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("b13") = "" Then
        MsgBox "税込み金額が未入力です" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

    If Sheets("請求書入力").Range("b14") = "" Then
        MsgBox "?@の支払明細が未入力です。他の支払い明細の、漏れはないですか?" & Chr(13) & "確認して下さい"
     Exit Sub
    End If

            With Worksheets("請求書入力").Range("A37:Y42")
            For i = 1 To .Rows.Count
                If .Cells(i, 1).Value <> "" Then
                    If MyRNG Is Nothing Then
                        Set MyRNG = .Rows(i)
                    Else
                        Set MyRNG = Union(MyRNG, .Rows(i))
                    End If
                End If
            Next i
        End With

            If Not MyRNG Is Nothing Then
            MyRNG.Copy
            Sheets("弥生会計へ転記").Range("a1000").End(xlUp).Offset(1). _
             PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                    Operation:=xlNone, _
                    SkipBlanks:=False, _
                    Transpose:=False

                Application.CutCopyMode = False

        End If

        '支払別への転記    

        With Worksheets("請求書入力").Range("A37:aa42")
            For i = 1 To .Rows.Count
                If .Cells(i, 1).Value <> "" Then
                    If MyRNG Is Nothing Then
                        Set MyRNG = .Rows(i)
                    Else
                        Set MyRNG = Union(MyRNG, .Rows(i))
                    End If
                End If
            Next i
        End With

            If Not MyRNG Is Nothing Then
            MyRNG.Copy
            Sheets("支払別").Range("a1000").End(xlUp).Offset(1). _
             PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                    Operation:=xlNone, _
                    SkipBlanks:=False, _
                    Transpose:=False

                Application.CutCopyMode = False

     End If

     Sheets("請求書入力").Activate
  Sheets("請求書入力").Range("c2").Select

  Application.ScreenUpdating = True

    End Sub

 よろしくお願いします。

(謙治) 2020/07/16(木) 17:11


  If Range("c5") <> "" Then
    If MsgBox("請求月は、当月締め日になっていますか?", vbYesNo) = vbNo Then
       Range("c5").Select
       Exit Sub
     Else
       Range("c6").Select
     End If
   End If

 差し替えてください。
 コード提示は、<> "" の前のコードはどうなっているか知りたいためでした。
(KLY) 2020/07/16(木) 23:15

KLY様
遅い時間に有難うございます。

私の伝え方が悪いのかもしれません。

コードを入れ替えましたが、

1、C5で("請求月は、当月締め日になっていますか?")とのメッセージが
 出て、ここで、はいをクリックすれば、次のステップC6に行きます。
 しかしC6がブランクであれば、 MsgBox "請求書の支払合計が未入力で
 す" & Chr(13) & "確認して下さい"と出ましたので入力しました。
 その状態のままで転記先に行きません。ボタン転記をクリックすれば
 MsgBox("請求月は、当月締め日になっていますか?")と再度出ます。

 希望は、C6に入力後、次のステップ以降に未入力があれば入力後、
 転記先に行くようにしたいのです。

2、C5で("請求月は、当月締め日になっていますか?")とのメッセージが
  出て、違う場合ここで、いいえ をクリックして修正します。
  でもそのままの状態で転記先に行きません。
  ボタン転記をクリックすれば、MsgBox("請求月は、当月締め日になって
  いますか?"と再度出ます。

  希望は、C5に入力後、次のステップ以降に未入力があれば入力後、
  転記先に行くようにしたいのです。
  
  よろしくお願いいたします。

(謙児) 2020/07/17(金) 00:24


差し替えた部分だけでいいかなと判断しました。
私もそうじゃないかなと思っていました。
またしばらく時間ください。
今の現状では修正後その都度コマンドボタンを押すことになりますね。
 
ユーザーフォームというのを知っていますか。
こういう入力には大変便利ですよ。一括で入力できますから。
(KLY) 2020/07/17(金) 11:39

MsgBox("請求月は、当月締め日になっていますか?"と再度出ます。

条件が <> "" となっているので再度出てもおかしくはありません。

(KLY) 2020/07/17(金) 11:55


KLY様、ありがとうございます。

ユーザーフォームというのを知っていますか。
聞いたことは、ありますが、使ったことは、ありません。

こういう入力には大変便利ですよ。一括で入力できますから。
それならお願いします。

条件が <> "" となっているので再度出てもおかしくはありません。
はい。わかりました。

よろしくお願いします。

(謙治) 2020/07/17(金) 12:37


 出来ましたので確認よろしく

 標準モジュールを追加して貼り付けてください。
 既存のボタンにこれを登録変更してください。マクロ名はセル移動。
 空白時と入力後の動きをコマンドボタンを押して確認してください。
 Range("D6") <> o のところでエラーになります。設定がおかしいです。
 実行確認時には ="" にして確認してください。
 よければ差し替えお願いします。

 最初に"請求書入力"とシート名を指定しておけば何度も記述する必要ありません。
 Range("C5") に出てくるMsgBoxの使用法についても理解してください。

 Sub セル移動()

 Sheets("請求書入力").Select

 Range("C3").Select

 If Range("C3") = "" Then
   MsgBox ("担当名が未入力です" & Chr(13) & "確認して下さい")
   Exit Sub
 End If

 Range("C4").Select

 If Range("C4") = "" Then
    MsgBox "支払先名が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("C5").Select

 If Range("C5") = "" Then
    MsgBox "請求書年月日が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Dim 確認

 If Range("C5") <> "" Then
    確認 = MsgBox("請求月は、当月締め日になっていますか?", vbYesNo)
       If 確認 = vbYes Then
          Range("C6").Select
       Else
         Exit Sub
       End If
 End If

 If Range("C6") = "" Then
    MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("D6").Select

 If Range("D6") <> o Then  'ここでエラーが出る設定見直し
    MsgBox "支払金額と各勘定科目の金額に差額が出ています" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B10").Select

 If Range("B10") = "" Then
    MsgBox "勘定科目等が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B13").Select

 If Range("B13") = "" Then
    MsgBox "税込み金額が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B14").Select

 If Range("B14") = "" Then
    MsgBox "?@の支払明細が未入力です。他の支払い明細の、漏れはないですか?" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 End Sub

 ここに出で来るセルの項目名を教えてください。
 ユーザーフォームで使用します。
(KLY) 2020/07/17(金) 17:11

KLY様
お忙しいところ、有難うございました。

移動に2時間ばかりかかりますので、申し訳ありませんが、
しばらくお待ちください。

(謙治) 2020/07/17(金) 18:10


KLY様
有難うございます。

>標準モジュールを追加して貼り付けてください。
>既存のボタンにこれを登録変更してください。マクロ名はセル移動。

一旦、VBA挿入で標準モジュールに貼りつけましたが、既存ボタンにこれを登録変更とありましたので
わからなくなったので既存のコードを下記のようにコードを入れ替えました。
しかし他のシートに貼り付けするコードは、残しました。

>空白時と入力後の動きをコマンドボタンを押して確認してください。
F8(コマンドボタン?)を押しましたら
With Worksheets("請求書入力").Range("A37:Y42")で止まり
コンパイルエラーが出まして「endsub.end function 又はend property以降にはコメントのみが記述
できます。」となっています。私のどこが間違っているのでしょうか?

Sub セル移動()

     Application.ScreenUpdating = False

        Dim MyRNG As Range
        Dim i As Long
 Sheets("請求書入力").Select
 Range("C3").Select

 If Range("C3") = "" Then
   MsgBox ("担当名が未入力です" & Chr(13) & "確認して下さい")
   Exit Sub
 End If

 Range("C4").Select

 If Range("C4") = "" Then
    MsgBox "支払先名が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("C5").Select

 If Range("C5") = "" Then
    MsgBox "請求書年月日が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Dim 確認

 If Range("C5") <> "" Then
    確認 = MsgBox("請求月は、当月締め日になっていますか?", vbYesNo)
       If 確認 = vbYes Then
          Range("C6").Select
       Else
         Exit Sub
       End If
 End If

 If Range("C6") = "" Then
    MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("D6").Select

 If Range("D6") <> o Then   'ここでエラーが出る設定見直し
    MsgBox "支払金額と各勘定科目の金額に差額が出ています" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B10").Select

 If Range("B10") = "" Then
    MsgBox "勘定科目等が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B13").Select

 If Range("B13") = "" Then
    MsgBox "税込み金額が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B14").Select

 If Range("B14") = "" Then
    MsgBox "?@の支払明細が未入力です。他の支払い明細の、漏れはないで
 すか?" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 End Sub

            With Worksheets("請求書入力").Range("A37:Y42")
            For i = 1 To .Rows.Count
                If .Cells(i, 1).Value <> "" Then
                    If MyRNG Is Nothing Then
                        Set MyRNG = .Rows(i)
                    Else
                        Set MyRNG = Union(MyRNG, .Rows(i))
                    End If
                End If
            Next i
        End With

            If Not MyRNG Is Nothing Then
            MyRNG.Copy
            Sheets("弥生会計へ転記").Range("a1000").End(xlUp).Offset(1). _
             PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                    Operation:=xlNone, _
                    SkipBlanks:=False, _
                    Transpose:=False

                Application.CutCopyMode = False

        End If

        '支払別への転記

        With Worksheets("請求書入力").Range("A37:aa42")
            For i = 1 To .Rows.Count
                If .Cells(i, 1).Value <> "" Then
                    If MyRNG Is Nothing Then
                        Set MyRNG = .Rows(i)
                    Else
                        Set MyRNG = Union(MyRNG, .Rows(i))
                    End If
                End If
            Next i
        End With

        If Not MyRNG Is Nothing Then
            MyRNG.Copy
            Sheets("支払別").Range("a1000").End(xlUp).Offset(1). _
             PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
                    Operation:=xlNone, _
                    SkipBlanks:=False, _
                    Transpose:=False

                Application.CutCopyMode = False

     End If

     Sheets("請求書入力").Activate
  Sheets("請求書入力").Range("c2").Select

  Application.ScreenUpdating = True

    End Sub

(謙児) 2020/07/17(金) 22:01


ちゃんと見ていませんが、コードの中ほどにある「End Sub」がエラーの原因では?
(はらぺこ) 2020/07/17(金) 22:07

はらぺこ様
有難うございました。

今、確認をしましたらKLY様の貼り付けの最後が End Subでした。
その次にシートの転記元 With Worksheets("請求書入力").Range("A37:Y42")の
コードを残したままだったので「End Sub」がエラーになっていました。
今、外しました。

(謙児) 2020/07/18(土) 01:05


下記コードをF8ボタンで一つ一つ押そうとしましたら 最下段に示すRange
("C3").Selectに来ると
this work sheetで作った(教えて頂いて作ったコードです。)コードに行き
ます。??

そこで改めてボタンを押しますと「さんぷる壱を実行できません」とエラー
メッセージが出ます。
ボタンのところで右クリックをしてマクロ登録を押しますとさんぷる壱は、新
規作成になります
そこで他の項目の中で sheet 1セル移動をクリックすると編集になりF8ボ
タンで一つ一つ押そうとしましたら Range("C3").Selectに来るとthis work
sheet のコードに行きます。??

ボタンのマクロ名をコードの中で セル移動と替えているのに 何故、さんぷ
る壱を実行できません と
出るのでしょうか?

思えば、KLY様がセル移動の貼り付けと言われた時に最初 標準モジュール
に貼りつけました。
(当初の転記元から転記先へのコードは、入れていません)
しかし ボタンの中を入替えといわれたので ボタンのマクロ名を「さんぷる
壱」から「セル移動」に
替えました。(ここでは、転記元から転記先へのコードは、入れています。)
最初、標準モジュールに貼ったコードが邪魔をしているのでしょうか?
標準モジュールに貼ったコードを削除しようと思っていますが、そのコードを
よう見つけることが出来ません。

お手数おかけして申し訳ございませんがよろしくお願いいたします。

Sub セル移動()

     Application.ScreenUpdating = False
        Dim MyRNG As Range
        Dim i As Long
 Sheets("請求書入力").Select
 Range("C3").Select

(謙児) 2020/07/18(土) 01:47


 説明がうまく伝わらなかったみたいですね。すみません。
 確認させてください。
 >VBA挿入で標準モジュールに貼りつけましたが
 標準モジュールにModuleはいくつありその番号はどうなっていますか。
 この返事が来たら
 マクロ登録変更不具合については別途連絡します。
(KLY) 2020/07/18(土) 09:51

KLI様、ありがとうございます。
すみませんが、
開発からVBAをクリックするのですが、
標準モジュールの場所がわかりません。
いくつあるかもどうして探すのか、わかりません。
その番号もどこについているか等わかりません。

お手間を取らさないように自分では、
頑張っているのですが、ご迷惑をおかけして
申し訳なく思っています。

(謙治) 2020/07/18(土) 14:21


追伸、KLYさまの説明が上手く伝わらなかったの
では、なく私の理解不足です。

(謙治) 2020/07/18(土) 14:26


 こんにちは ^^
Alt + F11 で vbaエディター[VBE]が現れます。
左端に3対7くらいの割合で画面が分割されて、左の上端に
プロジェクトとか表示されたものは有りますでしょうか。
https://excel-ubara.com/excelvba1/EXCELVBA304.html
こちらが参考になるかもしれません。m(_ _)m
(隠居じーさん) 2020/07/18(土) 14:36

 ↑は参考になったことでしょうか。
 >>標準モジュールを追加して貼り付けてください。
 その中で「標準モジュールの挿入」の欄がありますよね。
 このことだったんです。
 追加したとしたら「Module1」「Module2」になっているはずです。
 >プロジェクトとか表示されたものは有りますでしょうか。
 インターネットエクスプローラー風になっています。

 理解できたらマクロ登録変更不具合については別途連絡します。
(KLY) 2020/07/18(土) 17:32

隠居じーさん様
こんばんは、教えて頂き有難うございます。

>Alt + F11 で vbaエディター[VBE]が現れます。
>左の上端にプロジェクトとか表示されたものは有りますでしょうか。
はい、あります。

KLY様にも下記を参照してください。
プロジェクト-VBAProject × 
その下に3つのアイコンがあり左からコードの表示、オブジェクトの表示、フォルダーの切り替え
その下にVBAProject
その下にclass1
その下にModule1から5迄
その下にSheet1、142,3,5,6,9迄
最後にThisWorkbook
となっています。

>Alt + F11 で vbaエディター[VBE]が現れます。
これ便利ですね。https//も読みました。有難うございます。

最初、私は標準モジュールを出す際、開発をクリック、左端のVisual Basicをクリックしたのですが、
上記Alt + F11を押したようなわかりやすい並びではなく、左端が2列分沢山下に
表示され標準モジュールの表示がありませんでした。そこでネットで調べましたらVisual Basic を
クリックして挿入を押して標準モジュールが表示されていますと記載されていましたのでそのように
しました。

「Module1」から5迄表示されていますがダブルクリックをしてコードが表示されて
いるのはModule5だけです。(各シートへ行くコードです。)

KLY様へ
>理解できたらマクロ登録変更不具合については別途連絡します。
理解出来ました。

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

(謙治) 2020/07/18(土) 19:17


先程は、会社で
>Alt + F11 で vbaエディター[VBE]が現れます。 を実行しましたら
プロジェクト-VBAProject × 
その下に3つのアイコンがあり左からコードの表示、オブジェクトの表示、フォルダーの切り替え
となりました。
その下に
VBAProject
その下にclass1
その下にModule1から5迄
その下にSheet1、142,3,5,6,9迄
最後にThisWorkbook

>上記Alt + F11を押したようなわかりやすい並びではなく、左端が2列分沢山下に
>表示され標準モジュールの表示がありませんでした
これは自宅で行ったものです。

ですから会社で行った時には、上記Alt + F11を押したようなわかりやすい並びでしたから 今、自宅に
もどりAlt + F11をしたらうまく行くと思ったのですが、やはり標準モジュールの表示がでません。
表示は、
VBAの左端にクラスの列 、その右側にグローバルのメンバーが どちらもabc順にzまで
出ています。

下記のような並びにどうすればなるのでしょか?

VBAProject
その下にclass1
その下にModule1から5迄
その下にSheet1、142,3,5,6,9迄
最後にThisWorkbook

(謙児) 2020/07/18(土) 21:50


 こんばんは ^^ 横入りすみません。
一番左に 四角でかこまれた、十字、みたいなの、有りましたら。。。
それをクリックすれば、出てくるかもしれません。
もし、なにもなければ、上の段のメニューに【挿入】があります
ので、そこから標準モジュールを新規に作成しても、全ての標準モジュール
が現れると思います。。。← 多分 ^^;。。。。m(_ _)m...でわ
(隠居じーさん) 2020/07/18(土) 22:03

 追伸
失礼いたしました。
フォルダアイコン【フォルダの切替】が出ていれば、それ、をクリックしても
並びが、変わるかと。。。思いますです。外していましたら、お許しを。m(_ _)m
(隠居じーさん) 2020/07/18(土) 22:08

 こんばんは ^^
私も勘違いをしているかもしれません。ご説明の内容ですと左側、前面に
プロパティウインドウが表示されているのかもしれません。
コードを書く部分と左端のメニュー表示部分の間に✖が表示されていれば
それをクリックして とりあえず 、コード記入画面のみにして、表示
メニューから、プロジェクトエクスプローラをクリックして表示させてみて下さい。
(隠居じーさん) 2020/07/18(土) 22:26

 わかりました。多分
^^;。。。ぼろぼろで、あいすみません
右端に✖が二つあるとおもいますので、下の方をクリックして消して見て下さい

↑ 3件のどれかだと ここの記述が一番怪しいかも。オブジェクトブラウザが
全面表示されているのかも (*^^*)。。。m(__)mm(__)mm(__)m
(隠居じーさん) 2020/07/18(土) 22:33


隠居じーさん様
おはようございます。
色々調べて頂き有難うございます。

>一番左に 四角でかこまれた、十字、みたいなの、有りましたら。。。
なかったのです。

>上の段のメニューに【挿入】がありますので、そこから標準モジュールを新規に作成
ここは、私もわかるのですが、残念ながら全ての標準モジュールは現れず、新規の標準モジュールのみで
した。

>フォルダアイコン【フォルダの切替】
切り替えをしても変化はありません。

>プロパティウインドウが表示されているのかもしれません。
>コードを書く部分と左端のメニュー表示部分の間に✖が表示されていれば
>それをクリックして とりあえず 、コード記入画面のみにして、表示
>メニューから、プロジェクトエクスプローラをクリックして表示させてみて下さい。
隠居じーさん様から上記コメントを頂く前に私もVBAのアイコンをいろいろ押しながら試し
挿入の左の表示をクリックして上から順にクリックしてみるのですが、標準モジュールの表示は
見つかりません。

>メニュー表示部分の間に✖が表示されていれば
>それをクリックして とりあえず 、コード記入画面のみにして、
✖をして見ましたが、コード記入画面にならず一番左が 上から下に
クラス 
グローバル
クラス1
モジュール1から11迄
シート1から9

右側は、グローバルのメンバー
リスト2,27、41、各シート名に飛ぶのが3つほど並んでいます。
今は、この状態です。

>右端に✖が二つあるとおもいますので
右端に✖が二つではなく一つだけありましたのでクリックしましたが、
このコメントのすぐ上の 今は、この状態です。と同じです。
勿論、私が違う画面で操作していると思うのです。

■いずれにしても標準モジュール作成は、挿入から選択ます。

■モジュールの件数を求めるのは、表示からプロジェクトエクスプローラをクリックして
モジュールが表示されれば、モジュールをダブルクリックしてコードが
入っているモジュールの件数をKLY様へ 報告すればいいのですね。

表示での各項目が全然理解できていませんので、やり取りが食い違っていると思います、
隠居じーさん様、申し訳ありませんでした。

(謙児) 2020/07/19(日) 07:09


今、自宅ですが会社で見ようと思い、メールでファイルを添付しようと思って
もう一度VBAを再確認しましたら
>右側は、グローバルのメンバー
>リスト2,27、41、各シート名に飛ぶのが3つほど並んでいます。
>今は、この状態です。
上記リスト2のコードに変わっています。??
表示のプロジェクトエクスプローラをクリックしても変わりません。??

(こういう事を記載してご迷惑をおかけしたくないのですが、知識がないという事は、疲れてきますね。
 でも皆様に、ご親切に手を抜かず教えて頂くのは、有りがたいことです。

 本来、表示の各項目をネット等で調べ勉強しなければならないと思うのですが、
 仕事も忙しく自宅で考えながらする始末、早くこなしていくためにも
 そこに時間をかけてしまってーーー言い訳ですね、すみません。)

 

(謙児) 2020/07/19(日) 07:32


 おはようございます ^^
お忙しい中でのご勉学ご苦労様です。
当方が2016なので、画面表示が違うのだと思います。帰って混乱を招く様なコメントとなり
ご迷惑をお掛けしているやもしれません。申し訳ありません。
左右に3:7で画面分割されていて、左に、シートなりモジュールが表示されているのでしたら
それをどれか、ダブルクリックしてみて下さい。。。^^;
ちなみに左側画面の右端に✖はいくつ表示されていますでしょうか?。。。でわ。m(_ _)m 
(隠居じーさん) 2020/07/19(日) 08:53

隠居じーさん様
おやさしいお言葉、有難うございます。
早く個々の仕事を消化していき、会社の仕事を自宅で考えることを避ける様に頑張り
VBAの仕組みを勉強して行きたいと思います。

さて私の自宅でのPCは、エクセル2013です。古い為違いがあるのですね。

>左右に3:7で画面分割されていて、左に、シートなりモジュールが表示されているのでしたら
>それをどれか、ダブルクリックしてみて下さい。
実行しようとVBAを開けましたら分割されてなくて単にリスト2のコードのみの画面に
なっています。そこで表示のプロジェクトエクスプローラをクリックすれば、左端が
プロパティsheet1
その下が全体/項目別 右側が、SUB リスト2のコードが書かれています。
そのコードの余白部分をダブルクリックしますと左端が、モジュール8に変わりました。

左側画面の右端に✖はいくつ表示されていますでしょうか?。。。✖は一つです。

隠居じーさん様、この(VBAの表示)件につきましては、時間をおかけして申し訳
ありませんので、ストップしてください。 

ふっと思ったのですが、一度会社のPCにこのファイルを転送して当初教えて頂いた標準モジュールを
出して、うまくいけば、そのファイルを自宅に転送して、そのファイルを利用して作業を進めて行こうと
思います。

本当に一生懸命になっていただき有難うございます。

(謙児) 2020/07/19(日) 09:46


 おはようございます ^^
VBE、一旦STOPをご要望の件、承りました。
いじくり回していると。なぁ〜んとなく解かってくる
場合も有りますです。^^; ← 理論派のかたに叱られそぉですが( ̄▽ ̄)
大作を作成中のご様子で、ご健闘をお祈りいたします。
最後に、この左側画面の×の個数をお尋ねした理由は
こちらに複数の画面が重なる場合が御座いますので。
ご注意くださいませ。でわでわ。これで私は退散させ
て戴きます、。。。また現れるかもしれません。。。
(#^^#)vでわでわ。m(_ _)m
(隠居じーさん) 2020/07/19(日) 10:03

隠居じーさん様
いろいろ有難うございました。

>大作を作成中のご様子で、ご健闘をお祈りいたします。
有難うございます。皆様に教えて頂き前に進んでいます。

>この左側画面の×の個数をお尋ねした理由は
>こちらに複数の画面が重なる場合が御座いますので。
>ご注意くださいませ
はい、わかりました。

ここで書くことかどうかわかりませんが、コロナウイルス感染のおり
どうぞご自愛ください。

(謙児) 2020/07/19(日) 10:54


 >改めてボタンを押しますと「さんぷる壱を実行できません」とエラーメッセージが出ます。
 ここだけ読むと、コードは 「さんぷる壱」 を 「セル移動」 に(プロシージャ名を)変更したのに
 ボタンに登録しているマクロが「さんぷる壱」のまま というだけの話のように思えますが

 >ボタンのマクロ名をコードの中で セル移動と替えている
 の意味がいまいちわかりかねます。どういう意味でしょう?
 きちんと説明された方が解決が早いと思います。

〜〜〜〜〜〜〜〜〜〜〜

 >皆様に、ご親切に手を抜かず教えて頂くのは、有りがたいことです。

 ※ 手抜きの回答と思われましたらスルーして下さい。

(チオチモリン) 2020/07/19(日) 12:13


チオチモリン様
ご連絡ありがとうございました。

>ボタンのマクロ名をコードの中で セル移動と替えている どういう意味?

KLY様の記載、2020/7/17(金)17:11での回答で、
>標準モジュールを追加して貼り付けてください。
>既存のボタンにこれを登録変更してください。マクロ名はセル移動。となっていますので、

私が行ったことは、既存のボタンを右クリックしてマクロ登録を開き
sub さんぷる壱()をsub セル移動()に変更して下記のコードを入力、当然前のコードは、
削除して入れ替えました。 
そしてボタンを押しますと「さんぷる壱を実行できません」とエラーメッセージが出ます。
ということです。

以下、KLY様の記載です。

 Sub セル移動()

 Sheets("請求書入力").Select
 Range("C3").Select
 If Range("C3") = "" Then
   MsgBox ("担当名が未入力です" & Chr(13) & "確認して下さい")
   Exit Sub
 End If

 Range("C4").Select

 If Range("C4") = "" Then
    MsgBox "支払先名が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("C5").Select

 If Range("C5") = "" Then
    MsgBox "請求書年月日が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Dim 確認

 If Range("C5") <> "" Then
    確認 = MsgBox("請求月は、当月締め日になっていますか?", vbYesNo)
       If 確認 = vbYes Then
          Range("C6").Select
       Else
         Exit Sub
       End If
 End If

 If Range("C6") = "" Then
    MsgBox "請求書の支払合計が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("D6").Select

 If Range("D6") <> o Then  'ここでエラーが出る設定見直し
    MsgBox "支払金額と各勘定科目の金額に差額が出ています" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B10").Select

 If Range("B10") = "" Then
    MsgBox "勘定科目等が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B13").Select

 If Range("B13") = "" Then
    MsgBox "税込み金額が未入力です" & Chr(13) & "確認して下さい"
    Exit Sub
 End If

 Range("B14").Select

 If Range("B14") = "" Then
    MsgBox "?@の支払明細が未入力です。他の支払い明細の、漏れはないですか?" & Chr(13) & "確認して
 下さい"
    Exit Sub
 End If

 End Sub

■>皆様に、ご親切に手を抜かず教えて頂くのは、有りがたいことです。
 ※ 手抜きの回答と思われましたらスルーして下さい。
 
自分の思いを伝えるのは、難しいですね。
私の思いは、最初から手抜きの回答をうんぬんについて言ってるのではなく、
代表して隠居じーさん様のように表示がうまく出ませんと言いましたら、このようにされては、
次にうまくいかなければこのようにされては、と色々素人の私に合わせて教えて頂きご足労をかけて
ご回答を頂くのが感謝、有難い(場合によっては、途中でxxをネットで検索してお勉強してください。
といわれても仕方ないことです。)と言っているのです。

言葉足らずで失礼な解釈になってしまいまして申し訳ございませんでした。

(謙治) 2020/07/19(日) 14:07


 >以下、KLY様の記載です。
 のように書かれると如何にも私のコードが悪いのではないかと受け止めざるを得ません。
 隠居じーさんさんとのやりとりを拝見してあなたの理解不足には空き果てました。
(KLY) 2020/07/19(日) 16:05

 >既存のボタンを右クリックしてマクロ登録を開き
 【編集】ボタンをおしてVBEのコードウィンドウに画面遷移し、そこでプロシージャ
 >sub さんぷる壱()をsub セル移動()に変更
 した(だけ)ということですね。

 それだけだとボタンに登録されたマクロは従前の「さんぷる壱」のままですから、質問のような挙動になると思います。
 
 ボタンに登録するマクロ名を「セル移動」に変更(修正)してください。

 
(チオチモリン) 2020/07/19(日) 20:55


↓に移動っぽい
[[20200719165227]] 『Msg Boxのコメントプレビューが出来ない為』(謙治)

(もこな2 ) 2020/07/23(木) 12:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.