アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAは超初心者です。始めたばかりでなかなかのみこめず、
独学で解決できなくなり、ご教示いただきたく思います。

Excel VBAで、A列で表示させた値(こちらは数式バーには計算式が入っています)を、
隣のB列(B2からA列に値が入っている行まで)に特定の文字列と特定の文字列の間の値を表示させたいのです。

値は
A2~A10
まで入っています。

1行目は成功しました。
2行目から、A3以降の値が、転記されないのです。

分かりにくいかもしれませんが、画像を貼ります。(画像は完成させたいイメージ図です)
説明がうまくなく、申し訳ございません。どなたか原因等ご教示いただけたら
幸いです。宜しくお願い致します。


***********************
Sub 転記()

Dim S2 As Worksheet
Dim myStr As Variant
Dim myStr2 As Variant
Dim iRowI As Integer
Dim iLastRow As Integer

Set S2 = Worksheets("食べ物") '今回使用するシート

'"食べ物"シートのA列の最終行を取得する("抽出"列の最終行)
iLastRow = S2.Range("A2").SpecialCells(xlLastCell).Row

'最終データ行までループ処理させる
For iRowI = 2 To iLastRow

'文字列処理
myStr2 = S2.Cells(2, 1).Value
If S2.Cells(2, 2).Value = Mid(myStr2, InStr(myStr2, ")") + 1, InStr(myStr2, "WEEKLY") - InStr(myStr2, ")") - 2) Then
End If

Next

End Sub

「【Excel VBA】繰り返し処理ができ」の質問画像

A 回答 (2件)

こんばんは。



(1)いちご FOOD(@@@@)
>Mid(myStr2, InStr(myStr2, ")") + 1, ここは分かりますが、
>InStr(myStr2, "WEEKLY") - InStr(myStr2, ")") - 2)
ここが何をしているのかよくわからないですね。元のデータと違うのではないでしょうか?
画像からみる印象では、空白を探すという手もあるのですが、空白が必ずしもあるとは限らないわけです。
FOOD を探すとか、

例えば、こういうことになります。
For iRowI = 2 To iLastRow
 '文字列処理
  myStr =S2 .Cells(iRowI, 1).Value
  S2.Cells(iRowI, 2).Value = Mid(myStr, InStr(myStr, ")") + 1, InStr(myStr, ")") - InStr(myStr, "FOOD"))
Next
    • good
    • 1
この回答へのお礼

WindFallerさん
ご回答ありがとうございます!
上手く書けなくて申しわけございません(汗)
別で試していたソースを貼ってしまっていました・・・

myStr2 = S2.Cells(2, 1).Value
If S2.Cells(2, 2).Value = Mid(myStr2, InStr(myStr2, ")") + 1, InStr(myStr2, "FOOD") - InStr(myStr2, ")") - 2) Then
End If

Next

End Sub


B2の”いちご”は転記が出来たので、他のも同じように転記したいのに
上手くループ処理が出来ませんでした。
”いちご”の様に、前の(1)や後ろの”FOOD”から後ろの文字列は不要で、
その間にある文字列をすっぽり転記したかったのです( ; ; )

ご教示いただいたソースで、修正し試しています!
ありがとうございます!

お礼日時:2019/03/20 00:01

myStr2 = S2.Cells(2, 1).Value



If S2.Cells(2, 2).Value

両方とも同じ場所しか指定していないため
ループで何回同じ場所を処理しています
なんのためにiRowIという変数を準備したのかよく考えてみましょう
    • good
    • 1
この回答へのお礼

raraririruruさん
ご回答、ありがとうございます。
修正して試してみます!

お礼日時:2019/03/19 23:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!