Excel VBA質問箱 IV

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

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


13272 / 13646 ツリー ←次へ | 前へ→

【6197】コマンドボタンからの実行でエラーが・・・ 03/6/19(木) 10:30 質問
【6198】コードがみたい Be Quit 03/6/19(木) 10:38 回答
【6203】Re:コードがみたい 03/6/19(木) 11:21 質問
【6205】Re:コードがみたい Be Quit 03/6/19(木) 12:30 回答
【6209】Re:コードがみたい 03/6/19(木) 13:24 質問
【6215】Re:コードがみたい Jaka 03/6/19(木) 14:10 発言
【6219】うまくいきました! 03/6/19(木) 14:30 お礼
【6224】Re:うまくいきました! Jaka 03/6/19(木) 15:38 回答
【6217】どのイベントでしょう? Be Quit 03/6/19(木) 14:14 回答
【6218】Re:どのイベントでしょう? つる 03/6/19(木) 14:20 回答

【6197】コマンドボタンからの実行でエラーが・・・
質問    - 03/6/19(木) 10:30 -

引用なし
パスワード
   どうか教えてください。
コマンドボタンを押すとプログラムが実行する、というものを作りたいのですが、
うまくいきません。
エディタの実行ボタンやエクセルの「マクロの実行」をから実行させればうまくいくのですが、コマンドボタンを作ってクリックして実行させるとエラーになってしまいます。
理由がわからないのですが、どんな状況が考えられるのでしょうか。

【6198】コードがみたい
回答  Be Quit  - 03/6/19(木) 10:38 -

引用なし
パスワード
   こんにちは。
> コマンドボタンを作ってクリックして実行させるとエラーになってしまいます。
> 理由がわからないのですが、どんな状況が考えられるのでしょうか。
コードのご提示が解決の近道かと思います。

【6203】Re:コードがみたい
質問    - 03/6/19(木) 11:21 -

引用なし
パスワード
   こんにちは、Be Quit さん。
ご指摘ありがとうございます、まだ途中ですがコードは以下のとおりです。
初心者のため、見苦しい箇所はあるかと思いますが、宜しくお願いします。
(Set〜でエラーになります)

Private Sub CommandButton1_Click()
  Sheets("新").Activate
  Sh2EndRow = Cells(Rows.Count, "F").End(xlUp).Row
  Sh1EndRow = Sheets("旧").Cells(Rows.Count, "F").End(xlUp).Row
  For i = 3 To Sh2EndRow
    Set FCel = Sheets("旧").Range("F2" & ":F" & Sh1EndRow).Find(Range("F" & i).Value, _
      After:=Sheets("旧").Range("F2"), LookAt:=xlWhole, MatchCase:=True)
    If Not FCel Is Nothing Then
      SaveAd = FCel.Address
      Do
       If Cells(i, 6).Value = Sheets("旧").Range(FCel.Address).Value Then
        Sheets("旧").Range(FCel.Address).Interior.Pattern = xlGray16
        Sheets("差分").Range("B" & i & ":G" & i).Value = Range("B" & i & ":G" & i).Value
        For q = 2 To 27
          If Cells(i, q + 6).Value <> Sheets("旧").Range(FCel.Address).Offset(0, q).Value Then
            Range("F" & i).Offset(0, q).Interior.Pattern = xlGray16
            Sheets("差分").Cells(i, q + 6).Value = Sheets("旧").Range(FCel.Address).Offset(0, q).Value - Range("F" & i).Offset(0, q).Value
           Else
            Sheets("差分").Cells(i, q + 6).Value = 0
          End If
        Next
       End If
       Set FCel = Sheets("旧").Range("F2" & ":F" & Sh1EndRow).FindNext(FCel)
      Loop Until SaveAd = FCel.Address
      Set FCel = Nothing
    Else
      With Range("B" & i & ":AH" & i).Interior
        .ColorIndex = 37
        .PatternColorIndex = xlAutomatic
      Sheets("差分").Range("A" & i & ":AH" & i).Value = Range("A" & i & ":AH" & i).Value
      Sheets("差分").Range("AH" & i).Value = "追加"
      End With
    End If
  Next
  Set FCel = Nothing
  Sheets("差分").Activate
End Sub

【6205】Re:コードがみたい
回答  Be Quit  - 03/6/19(木) 12:30 -

引用なし
パスワード
   >(Set〜でエラーになります)
まず、変数の宣言をしたほうがいいと思います。
それと、ブレークポイントはおつかいになりましたか?

【6209】Re:コードがみたい
質問    - 03/6/19(木) 13:24 -

引用なし
パスワード
   早速のお返事ありがとうございます。

>>(Set〜でエラーになります)
>まず、変数の宣言をしたほうがいいと思います。

宣言してみました。
やはり同じトコロでエラーが出ます。

>それと、ブレークポイントはおつかいになりましたか?

コマンドボタンでの実行以外では使ったりもします。

【6215】Re:コードがみたい
発言  Jaka  - 03/6/19(木) 14:10 -

引用なし
パスワード
   こんにちは。

う〜ん、どうも私のコードを参考にしているみたいですが...。
ごめんなさい。全然覚えていません。

>Set〜でエラーになります
とのことですが、
こんな風にコードを追加して、P=0にブレークポイントを設けて見て、ステップ実行してみるのも良いと思います。(変数の中身にも注意してください。)


Range("F" & i).select
p=0
Set FCel = Sheets("旧").Range("F2" & ":F" & Sh1EndRow).Find(Range("F" & i).Value, _
      After:=Sheets("旧").Range("F2"), LookAt:=xlWhole, MatchCase:=True)

【6217】どのイベントでしょう?
回答  Be Quit  - 03/6/19(木) 14:14 -

引用なし
パスワード
   Private Sub CommandButton1_Click()は
どのイベントでしょう?
UserForm? WorkSheet?

【6218】Re:どのイベントでしょう?
回答  つる  - 03/6/19(木) 14:20 -

引用なし
パスワード
   ▼Be Quit さん:
>Private Sub CommandButton1_Click()は
>どのイベントでしょう?
>UserForm? WorkSheet?


WorkSheetのほうのボタンです。
VBAのボタン=【ツールバー】−【フォーム】の中の【コマンドボタン】

カーソルが取れないです。

【6219】うまくいきました!
お礼    - 03/6/19(木) 14:30 -

引用なし
パスワード
   こんにちは、Jakaさん。
回答ありがとうございます。

>う〜ん、どうも私のコードを参考にしているみたいですが...。
>ごめんなさい。全然覚えていません。

大変参考にさせていただきました!

>>Set〜でエラーになります
>とのことですが、
>こんな風にコードを追加して、P=0にブレークポイントを設けて見て、ステップ実行してみるのも良いと思います。(変数の中身にも注意してください。)
>
>Range("F" & i).select
>p=0
>Set FCel = Sheets("旧").Range("F2" & ":F" & Sh1EndRow).Find(Range("F" & i).Value, _
>      After:=Sheets("旧").Range("F2"), LookAt:=xlWhole, MatchCase:=True)

ありがとうございます、御陰様でうまくいきました。
また何かありましたら宜しくお願い致します!

【6224】Re:うまくいきました!
回答  Jaka  - 03/6/19(木) 15:38 -

引用なし
パスワード
   >>Range("F" & i).select
>>p=0
>>Set FCel = Sheets("旧").Range("F2" & ":F" & Sh1EndRow).Find(Range("F" & i).Value, _
>>      After:=Sheets("旧").Range("F2"), LookAt:=xlWhole, MatchCase:=True)
>
>ありがとうございます、御陰様でうまくいきました。
>また何かありましたら宜しくお願い致します!

どのようにうまくいったのか良く解りませんでしたが、もしかしてこれだったのでしょうか?

Private Sub CommandButton1_Click()
  Sheets("新").Activate
  activecell.activate  '← これ追加。

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