質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

777閲覧

VBAの動作不良について教えてください。

noda_T

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2021/12/06 10:08

編集2021/12/07 02:58

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
ソースコード上のCells(j.Row,"B")Selectの部分でJ.Rowに数字が格納されていますが、
セレクトが機能しません。
こちらの解決方法を教えてください。

発生している問題・エラーメッセージ

座標を選択できない。

エラーメッセージ

該当のソースコード

Private Sub CommandButton1_Click() Dim i As Integer Dim j As Range Dim shName As String Dim What As String i = 1 Do Until i > 12 '追加した場合はi>〇を変更する Worksheets(1).Activate On Error Resume Next Range(Cells(5 + i, 3), Cells(5 + i, 8)).Copy shName = Cells(5 + i, 2).Value If shName = vbNullString Then Exit Sub Sheets(shName).Activate Set j = Range(Cells(38, 1), Cells(97, 1)).Find(What:=Cells(1, 10).Value) If j Is Nothing Then MsgBox "見つかりませんでした。" End If Cells(j.Row, "B").Select ActiveCell.PasteSpecial Paste:=xlPasteValues i = i + 1 Loop End Sub

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/12/06 10:45

コードを見やすくするためにコードは「コードの挿入」で記入してください。 質問のコードは何をするコードでしょうか?簡単な説明があると良いかと思います。
bebebe_

2021/12/06 23:50

シートの入力されている状態がわからないですがコードだけでは「Cells(j.Row, "B").Select」含め動作しました。 シートの内容とズレている部分等があるのではないでしょうか? ステップイン等を使い1行ずつ実行して行けば問題がどこにあるかわかると思います
noda_T

2021/12/07 03:03

書式が正しく記載できておらず、申し訳ありません。ソースコードを修正しております。 質問のコードはSetにてjに検索一致したセルの行の座標を格納し、その座標のセルを選択しアクティブにする目的です。
hatena19

2021/12/07 03:41

On Error Resume Next の行をコメントアウトして、実行してみてください。 エラーメッセージがでませんか。でたら、そのメッセージとエラーの出た行を追記してください。
noda_T

2021/12/07 03:44

>bebebe_さん:ステップインにて該当のコード実行時にj.Rowに正しい値が格納されているところまでは確認できていますが、選択がされない状態となっています。
hatena19

2021/12/07 03:56

下記のようにデバッグコードを埋め込んで実行して、イミディエイトウィンドウに表示された結果を提示してもらえますか。 Debug.print j.Row Cells(j.Row, "B").Select Debug.print ActiveCell.Address
bebebe_

2021/12/07 04:00

j.Rowの値もおかしくないならコピー先のシートに保護がかかっていたりはしませんか?
noda_T

2021/12/07 04:10

ベストアンサーの方の対処法で解決いたしました。親身に相談乗っていただき、ありがとうございました。
guest

回答2

0

ベストアンサー

まずは On Error Resume Next をなくしてみたらどうでしょう。


VBA

1j.Offset(, 1).PasteSpecial Paste:=xlPasteValues

とかはどうですか。

投稿2021/12/07 02:42

編集2021/12/07 03:55
jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noda_T

2021/12/07 04:09

ありがとうございます。On Error Resume Nextを消すと正常に動作しました。
jinoji

2021/12/07 04:31

On Error Resume Nextを消すと正常に動作する、というのは多分違いますけどね。 エラーを無視した結果、どこかの処理が意図通りにならなかったのだと思います。 おそらくshName あたりの値がおかしくてシートをActivateする処理が失敗している、とかじゃないかと推測していますが。
guest

0

(機械翻訳)Cells キーワードの直後に行と列のインデックスを指定できます。

https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.cells#example

"B"のような値ではなく、1などのインデックスを指定するもののようです。

vba

1Worksheets("Sheet1").Cells(5, 3).Font.Size = 14

投稿2021/12/06 13:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/12/07 02:30

列名で指定することも可能です。 列番号だといちいち数えなくてはいけないので列名で指定することはよくあります。
退会済みユーザー

退会済みユーザー

2021/12/07 03:34

コメントくださってありがとうございます。 列名で指定することの可能なのですね。 リファレンスを見て、「インデックス」と記載されていたため、数値しか指定できないものと早とちりしてしまいました・・ 混乱するような回答をしてしまいまして、ごめんなさい。
noda_T

2021/12/07 04:11

ご回答ありがとうございました。ベストアンサーの方の対処法で解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問