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

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

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

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

Q&A

解決済

3回答

1023閲覧

VBA 修飾子不明、うまく実行しない

OOOOO

総合スコア11

VBA

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

0グッド

0クリップ

投稿2018/05/08 04:12

編集2018/05/08 04:33

初めまして、観覧ありがとうございます。
VBAについて、2点ほどうまくいかず、質問させていただきました。

1、sheet1で実行した際、sheet2の内容をクリアにすることができない
2、修飾子不明のエラーが出るが、原因が見つからない

勉強不足で多雨異変申し訳ありませんが、自力では解決できずに時間だけがすきていきます。
どうか、お力をお貸ししていただえたら幸いです。
よろしくお願い致します。

Option Explicit

lang

1VBA

Dim name As String, FM As String, adress1 As String, adress2 As String, Row As String
Dim data As Long, i As Long

'Sheet2の内容を消しておく ★解決
Sheet2.Range("A2:H100").ClearContents

'検索結果に記入されたデータを格納
name = Range("M2").Value
FM = Range("P2").Value
adress1 = Range("M3").Value
adress2 = Range("M4").Value

'cellの値とそれぞれが一致したら、その配列をコピーペースト
For i = 2 To Rows.Count

If Cells(i, 2).Value = "" Then
GoTo continue1
Else
If Cells(i, 2).Value <> name Then
GoTo continue2
Else

continue1:
Row = Range(Cells(i, 1), Cells(i, 8)).Value
Row.Copy Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)  ★Rowの修飾子不明

lang

1修飾子が不正です

continue2:
Next i

End If
End If

End Sub

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

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

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

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

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

m.ts10806

2018/05/08 04:30

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。
m.ts10806

2018/05/08 04:32

「多雨異変」とは?おそらく「大変」の打ち間違えかと思いますが、少し落ち着いて文章を見直して投稿してください。
guest

回答3

0

「Row = Range(Cells(i, 1), Cells(i, 8)).Value」で、
Row は String型 の変数ですよね?
Row には何の値が入るんでしょうか?
(個人的には、値が入ることの方が不思議に思います)

で、Row.Copy って何がしたいんでしょうか?
残念ながらVBAでは、String型の変数に「Copy」等、
プロパティもメソッドも用意されてませんので。

投稿2018/05/08 04:38

ExcelVBAer

総合スコア1175

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

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

0

Sheet2ってなに?

VBA

1Dim Sheet2 As Worksheet

とか定義があってのSheet2なのであれば、

VBA

1Set Sheet2 = ActiveWorkbook.Worksheets("シートの名前")

とかすれば良さそう。

もしくは、Activebook.Sheets("Sheet2")ってことなら、

VBA

1Dim Sheet2 As Worksheet 2Set Sheet2 = ActiveWorkbook.Worksheets("Sheet2") 3

もう一点、
Dim (略), Row As Stringなのに、
Row.Copyってのはそりゃエラーになる。
何がしたいのか不明。
Copyメソッドを使うにはRangeオブジェクト。
コピー元Range().Copy Destination:=コピー先Range()
みたいな。
それとも、セル内の値だけコピーしたいなら、
セルのcolumn用のカウンター変数を用意して
Range().ValueもしくはCells().Valueでアクセスすれば良さげ。

投稿2018/05/08 04:23

編集2018/05/08 04:43
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

OOOOO

2018/05/08 04:29

sheet2についての動作は、 'Sheet2の内容を消しておく ★うまく機能しない の1行のみで使いました。どうやら問題はsaziさんの回答によって問題は解決できたようです。 Row = Range(Cells(i, 1), Cells(i, 8)).Value はsheet1のある行iの1列目から8列目までの値をとりたいと思い書きました。 配列の指定がわからないためこのようにしています。
guest

0

ベストアンサー

Sheet2が正しく参照できていないのでは。

VBA

1Worksheets("Sheet2").Range("A2:H100").ClearContents

2番目は.CopyはRangeオブジェクトに対するメソッドですので、単なるStringとしてしか定義されていないRowにはそんなメソッドはありませんというエラーです。
コードの記述としての是非はありますが、エラーとならない意図するコードとしては、以下のような記述です。

VBA

1Range(Cells(i, 1), Cells(i, 8)).Copy Sheets("Sheet2").Cells(Rows.Count,1).End(xlUp).Offset(1, 0)

全体的に作りかけのコードですね。色々とありそうですが頑張ってください。

投稿2018/05/08 04:19

編集2018/05/08 04:36
sazi

総合スコア25138

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

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

OOOOO

2018/05/08 04:22

迅速な回答ありがとうございます! 1つ目の問題は無事解決できました。とても助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問