• ベストアンサー

VBAにおける文字列結合と繰り返し入力の組み合わせについて

fumufumu_2006の回答

  • ベストアンサー
回答No.8

多分こんな感じでいいんではないでしょうか? 基本的には「For a = 1 To 10001」の後で「For i = 1 To 13」の前で初期化してやる必要があると思います。 (.Cells(2 * a + 4, 1).Value = 文字列 のためのデータを取得し始める前に初期化する) それと、確かにANo.5さんの指摘通り、Midbで取得したままcellに代入していると、量はともかく正しい値が表示されているのでしょうか・・・ Sub 例文() For a = 1 To 10001 dim 文字列 As String 'この上でもいいけど 文字列="" ggx = あるデータベース Dim i As Integer For i = 1 To 13 文字列 = 文字列 & MidB(ggx, i * 80 + 95, 2) Next i .Cells(2 * a + 4, 1).Value = 文字列 Next a End Sub

iammsk
質問者

お礼

返事が遅くなり申し訳ありませんでした。アドバイスの通りやってみたら,見事に要求どおりに動いてくれました。ありがとうございました!!! 「文字列=""」はここに質問する前,試行錯誤やっている途中に,入力したことはあるのですが,「For i = To 13」の後に入力してしまい,要求どおりの効果を得られなかった記憶はあります。変数の属性決定のタイミングにより効果が違ってくるとは,VBAは奥が深いです・・・・

関連するQ&A

  • VBA 文字列に関して

    現在 A22のセルに入力された文字列をボタンを押せば ばらばらにしてA22のセルから順番に入れるマクロを作りました (例)A22のセルに ”こんにちわ”の文字列が入っている場合 ボタン押下   ↓ A22のセル⇒こ B22のセル⇒ん C22のセル⇒に D22のセル⇒ち E22のセル⇒わ になる。 不思議なことに数字を16文字以上いれてボタンを押し文字を分離すると入力していない文字、数字が入ってしまいます。 数字だけこういう現象が発生してしまいます。 例えば "1111111111111111"と入力して文字を分離した場合 1.11111111111111E+15と個々のセルに格納されます。 原因がわかる方、教えて頂けないでしょうか? 以下がコードです。宜しくお願い致します。 Private Sub CommandButton1_Click()   Dim one As String   Dim myString As String   myString = Cells(22, 1)   numString = Len(Cells(22, 1))   If Len(myString) <= 50 Then    For i = 1 To Len(Range("A22").Value)      one = String(1, myString)      Cells(22, i) = one      myString = Replace(myString, one, "", 1, 1, vbTextCompare)    Next i   End If End Sub

  • 増やした列へ決められた文字を入力するには?

    いつもお世話になっております。 表があり、A列の前に1列追加し、その新しいA列の3行目のセルから表の最終行に「□」(四角)を表示するようにしたいのですが、思うように行かず困っております。 「□」は印刷後に手でチェックを入れる為に使うのが目的です。 Sub test() Columns("A").Select Selection.Insert shift:=xlToRight Dim myrow() As Variant Dim i As Integer For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1 myrow(i, 3) = "□" & i Next End Sub A列は増えるんですが、その先が動きません。 よろしくお願いいたします。 環境はWindowsXP Excel2003です。

  • エクセルVBAでセル内の特定文字列を太字に

    エクセル2003です。 A2からA100の範囲のすべてのセルに文字列(文章)が入っています。 セルにより、約30~1200文字程度とばらばらです。 この範囲の各セルの文字列の中に、「愛、恋、幸福、love」という文字列があれば、その語句だけを太字にしたいのです。 (なければ、なにもしません。) 英字(love)は半角全角大文字小文字を問いません。 一応、ここまでは書いたのですが、検索するところでお手上げになってしまいました。 なにとぞ、お助けください。 Sub Test() Dim myW Dim i As Long myW = Split("愛,恋,幸福,love", ",") For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row For n = LBound(myW) To UBound(myW) MsgBox Cells(i, "A").Value & "に" & myW(n) & "があれば太字に" 'この肝心な部分がわかりません。 Next n Next i End Sub

  • エクセル2003のVBAで列を指定

    エクセルで特定の列の2~10行目に対して、ある作業をする場合、列を指定する方法は以下のどれがいいでしょうか?あるいはもっといい方法があれば教えてください。 実際には列は約40列(固定)、行は1~2万行(変動)程度で、作業はもっと複雑です。 Sub test01() Dim col Dim i As Long, n As Long For Each col In Array(1, 3, 7, 8, 11) '列番号で指定 For i = 2 To 10 n = n + 1 Cells(i, col).Value = n Next i Next col End Sub Sub test02() Dim col Dim i As Long, n As Long For Each col In Array("A", "C", "G", "H", "K") '列の記号で指定 For i = 2 To 10 n = n + 1 Cells(i, col).Value = n Next i Next col End Sub Sub test03() Dim col Dim i As Long, n As Long For Each col In Range("A2,C2,G2,H2,K2") 'セルで指定 For i = 2 To 10 n = n + 1 col.Offset(i - 2).Value = n Next i Next col End Sub

  • VBA For Eachでセル内の文字列を一個ずつ取り出すには

    エクセル2000です。 たとえばA1セル内の文字列を一個ずつ取り出す場合、 Sub test01() For i = 1 To Len(Range("A1").Value) Cells(i, "B").Value = Range("A1").Characters(i, 1).Text Next End Sub このように最初から最後の文字まで何番目で指定することはわかるのですが、これをFor Each で回すにはどうしたらよいでしょうか? (⌒o⌒)? お教えください。 Sub test02() For Each ch In Range("A1").Characters i = i + 1 Cells(i, "B").Value = ch Next End Sub ではエラーになります。

  • VBA 文字列をキレイにしたいです。

    エクセルVBAでツールを作成しようとしています。 他のソフトで作成したデータなども関連するため、セルの中の文字列の先頭にシングルコーテーションが付加されてしまうケースがあるのですが、これが不要なので外したいと思います。 方法を検索した結果、以下の例を見つけました。 ---- 「'」を削除したいセルを選択してマクロを実行すると、 すべてのセルで先頭の「'」を削除します。 Sub Sample() Dim a As Range For Each a In Selection If Not a.HasFormula Then a = a Next a End Sub ---- 上記の方法だとセルを対象にしていると思うのですが、 プログラム上でセルの中身を既にstring型の変数に入れているのでその変数を用いて実現したいと考えていますが、書き換え方が分かりませんのでご教授いただけたらと思います。 宜しくお願い致します。

  • VBA(Excel2003)で文字列の切り出し

    下のプロシージャーで全角半角混じりの文字列を切り出し、別の文字列で結合しようと思いますがうまくいく場合といかない場合があります。 イミディエイト・ウィンドウ上とCell上で動作が違います。 Cell上でうまく表示させるにはどうしたらいいでしょうか? Sub Test() Dim myString(2) As String Dim i As Integer myString(0) = "airueo" myString(1) = "かきくけこ" myString(2) = "さシすせそ" For i = 0 To 2 Debug.Print MidMbcs(myString(i), 1, 5) & "...テスト" Cells(i + 1, 1).Value = MidMbcs(myString(i), 1, 5) & "...テスト" Next i End Sub Function LenMbcs(ByVal str As String) LenMbcs = LenB(StrConv(str, vbFromUnicode)) End Function Function MidMbcs(ByVal str As String, start, length) MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) End Function

  • VBA教えて下さい

    VBA初心者です やりたいこと 変数を宣言し 今開いているシート(activesheet)に for nextを使用し 列5~20を調べ 行3~5を指定し もし、5~20列の2行目のどれかに”No.8”という文字があれば(ここまでのコードは書けました) その当てはまる列の3~5行を選択し(1) 更に、(1)の下2列を選択する(2) そして、(1)と(2)を結合させる といったコードが書きたいです 考えたコード Sub test() Dim i As Long Dim j As Long With ActiveSheet For j = 5 To 20 For i = 3 To 5 If .Cells(j, 2) Like "*No.8*" Then 'ここからがわかりません End If Next i Next j End With End Sub 変な書き方なので例えを書きます A1セルにNo.8の文字があれば E1セルとF1セルを選択し 更に、E3セルとF3セルも選択し E1セルとF3まとめてセルを結合といったことがしたいです。 質問頂ければ追記しますm(ーー)m おそらくoffsetを使用して選択すると思うのですが上手く出来ませんでした 回答お願い致します

  • Excel 文字列を区切る VBA 質問

    A列にスペース区切りのデータがあります これをC列 D列 に分けて表示したいのですが A列のデータが不規則(個数がバラバラ 空白もある) と、なった場合 なかなか上手くいきません C列以降は使用可能です(空いてます) その道の方 お助けたください 元のVBAは Sub Sample3() Dim i As Long, tmp As Variant For i = 2 To 22 tmp = Split(Cells(i, 1), " ") Cells(i, 2) = tmp(0) Cells(i, 3) = tmp(1) Next i End Sub です お手数ですが宜しく お願いします

  • エクセルVBA 文字の置き換え

    Sub あ() For i = 1 To 100 If Cells(i, 1).Value Like "*解約*" Then Cells(i, 1).Interior.Color = vbRed Next i End Sub A列にA100まで、文章が入っています。 その文章のなかに”解約”という文字の入った文章の入ったセルだけを赤く塗りつぶすマクロ を作りました。 しかし、本当は、”解約”を”解除”という文字に置き換えるマクロが 作りたいのですが、どうしたらいいのでしょうか?