Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


40902 / 76732 ←次へ | 前へ→

【40919】Re:文字の置換
回答  へっぽこ  - 06/7/26(水) 10:44 -

引用なし
パスワード
   うーん…?よくわかりませんがとりあえず言われるがままに作ってみました。
(こんなんでいいのかな?でも言われたとーりだと思うけど)

Sub サンプル1()
  Dim 最終行 As Long
  Dim 処理行 As Long
  Dim 文字列 As String
  Dim 左側の文字列 As String
  Dim 設定列 As Long
  Dim 設定内容 As String
  Dim i As Long
  '1.A65536セルでCtrl+↑として位置付く行番号取得する。
  最終行 = Range("A65536").End(xlUp).Row
  '2.1行目〜最終行まで処理する。
  For 処理行 = 1 To 最終行
    '3.処理行のA列の内容を取得する。
    文字列 = Cells(処理行, "A").Value
    設定列 = 1
    '4.3で取得した文字列がなくなるまで処理を繰り返す。
    ' (Do〜Loopの中で空白ごとに分割する処理を行う)
    Do Until 文字列 = ""
      '5.function文字列分割処理に文字列を渡して空白で区切った
      ' 左辺を「左側の文字列」に受け取る。
      左側の文字列 = 文字列分割処理(文字列, " ")
      '6.セルに設定するための内容を保持する変数「設定内容」をいったん
      ' ここでクリアしておく。
      設定内容 = ""
      '7.5で受け取った左側の文字列の文字の個数分処理を繰り返す。
      For i = 1 To Len(左側の文字列)
        If i = 1 Then
          '8.最初の1回目はイコールを頭につける。
          設定内容 = "="
        Else
          '9.2回目からはアンドで繋ぐ。
          設定内容 = 設定内容 & "&"
        End If
        '10.左側の文字列を1文字づつダブルクォーテーションで囲む。
        設定内容 = 設定内容 & """" & Mid(左側の文字列, i, 1) & """"
      Next
      '11.設定先の列を一つカウントアップ(1つ右の列へ)
      設定列 = 設定列 + 1
      '12.8〜10で蓄えた内容をセルに設定する。
      Cells(処理行, 設定列).Value = 設定内容
    Loop
  Next
  
  MsgBox "おしまい"
End Sub

Function 文字列分割処理(文字列 As String, 区切り文字 As String) As String
  Dim 発見位置 As Long
  '13.文字列中の何桁目に区切り文字があるか調べる。
  発見位置 = InStr(文字列, 区切り文字)
  
  If 発見位置 = 0 Then
    '14.無い場合。文字列丸ごとを左辺として返す。
    文字列分割処理 = 文字列
    文字列 = ""
  Else
    '15.あった場合。区切り文字の左辺を戻り値とし、右辺を文字列に戻す。
    文字列分割処理 = Left(文字列, 発見位置 - 1)
    文字列 = Mid(文字列, 発見位置 + Len(区切り文字))
  End If
End Function

Sub 文字列分割処理のテスト用()
  Dim 処理前の文字列 As String
  Dim 処理後の文字列 As String
  Dim 左側の文字列 As String
  
  処理前の文字列 = "日本 アメリカ"
  処理後の文字列 = 処理前の文字列
  左側の文字列 = 文字列分割処理(処理後の文字列, " ")
  MsgBox "処理前の文字列=(" & 処理前の文字列 & ")" & vbCrLf & _
    "↓" & vbCrLf & "左側の文字列=(" & 左側の文字列 & ")" & vbCrLf & _
    "処理後の文字列=(" & 処理後の文字列 & ")"
End Sub

0 hits

【40882】文字の置換 やよ 06/7/25(火) 17:57 質問
【40885】Re:文字の置換 Kein 06/7/25(火) 18:12 発言
【40887】Re:文字の置換 へっぽこ 06/7/25(火) 18:18 質問
【40889】Re:文字の置換 やよ 06/7/25(火) 18:34 質問
【40891】Re:文字の置換 へっぽこ 06/7/25(火) 18:50 質問
【40892】Re:文字の置換 やよ 06/7/25(火) 19:31 発言
【40919】Re:文字の置換 へっぽこ 06/7/26(水) 10:44 回答
【40921】Re:文字の置換 ハチ 06/7/26(水) 11:18 発言
【40925】Re:文字の置換 Jaka 06/7/26(水) 12:43 発言
【41053】Re:文字の置換 やよ 06/7/28(金) 13:22 お礼

40902 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free