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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

4回答

39952閲覧

Excel VBA「修飾子が不正」変数でエラーがでます

lime

総合スコア16

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2016/06/07 06:27

編集2016/06/07 06:31

いつもお世話になっております。

Excel VBAでセルの文字列を取得して、ifで判定処理を行う処理をしたいのですが、
if分の変数の部分で「修飾子が不正」のエラーが出てしまいます。
自分で調べてみたのですが原因がわからず投稿させていただきました。
よろしくお願い致します。

エラー部分は、If (hoge.StartsWith(“hogehoge")) And check2 = "" Then
のhoge部分です。

'変数の宣言 Dim checkcell As String Dim count1 As Long Dim hoge As String Dim check2 As String Dim i As Long 'K列商品コードのパターン Set myRange = Range("K1:K1000") count1 = WorksheetFunction.CountA(myRange) '入力済みのセルをカウント1000件 '取得したセルの文だけ回す For i = 2 To count1 'csvの件数を取得して(1000件) 'K列の商品コードチェック K2から判定 Cell(11.2)からスタート… hoge = Cells(i, 11).Value check2 = Cells(i, 12).Value ‘↓ここでコンパイルエラー If (hoge.StartsWith(“hogehoge")) And check2 = "" Then Range(i, 23).Value = "Lot番号を入力してください。" End If Next 'for End Sub

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

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

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

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

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

maisumakun

2016/06/07 06:32

「check」という変数が宣言されていないようですが、それを直しても発生しますでしょうか。
lime

2016/06/07 06:39

大変失礼いたしました、checkではく、hoge部分になります。訂正いたしました。
guest

回答4

0

ベストアンサー

見たところ check という変数が定義されていないようです。hoge でしょうか。
また VBA の If には () はつけません。あと VBA で VB.NET(別言語)の StartsWith 相当の操作を行う関数は InStr で、これを使用して文字列内の位置を 1(先頭)と比較します。

lang

1If InStr(hoge, "hogehoge") = 1 AND check2 = "" Then 2 ' 何らかの操作を行う 3End If

投稿2016/06/07 06:34

編集2016/06/07 06:46
chitoku

総合スコア1610

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

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

lime

2016/06/07 06:41

回答ありがとうございます。 回答いただきましたInStr関数でエラーが起きずに上手く動きました。大変、勉強になりました。ありがとうございます
lime

2016/06/07 06:41

回答ありがとうございます。 回答いただきましたInStr関数でエラーが起きずに上手く動きました。 勉強になりました。
ttyp03

2016/06/07 06:46

InStrではStartsWithの代用にはならないと思いますが。 StartsWith→文字列が指定文字列で始まっているか InStr→文字列中に指定文字列があるか
chitoku

2016/06/07 06:46

回答が「文字列が指定文字列で始まる場合」ではなく「文字列が指定文字列を含む場合」になっていたため修正しました。
lime

2016/06/07 07:29

なるほど、回答の修正ありがとうございます!
guest

0

Excelのバージョンがわかりませんが、手元の2010ではStartsWithは使えませんでした。
またStartsWithの引数に全角のダブルクォーテーションが使われています(
代替策としてはこんな感じでしょうか。

If (Left(hoge, Len("hogehoge")) = "hogehoge") And check2 = "" Then

投稿2016/06/07 06:44

ttyp03

総合スコア16998

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

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

0

修正前のコードに回答してしまいました。


checkがどこにも宣言されていませんが。
checkcellの間違いでは?

投稿2016/06/07 06:33

編集2016/06/07 06:35
ozwk

総合スコア13521

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

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

lime

2016/06/07 06:34

申し訳ございません。checkではなく、hoge部分になります。 ソースを訂正致しました。
guest

0

転記ミスでなければ、hogehogeのリテラルの初めの方が全角ダブルクォーテーションになっているようです。
半角に修正して再度エラーとなるかご確認ください。

投稿2016/06/07 06:31

編集2016/06/07 06:32
takyafumin

総合スコア2335

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問