Excel VBA質問箱 IV

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

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


10913 / 13644 ツリー ←次へ | 前へ→

【19185】マクロ fff 04/10/24(日) 21:44 質問[未読]
【19188】Re:マクロ ichinose 04/10/24(日) 22:01 回答[未読]
【19190】Re:マクロ ichinose 04/10/24(日) 22:34 発言[未読]
【19189】Re:文字列の大文字の前に特定文字を挿入し... かみちゃん 04/10/24(日) 22:21 回答[未読]
【19222】Re:マクロ [名前なし] 04/10/25(月) 22:35 回答[未読]

【19185】マクロ
質問  fff  - 04/10/24(日) 21:44 -

引用なし
パスワード
   マクロを用いて、半角の大文字があれば、その前にアンダーバーを入れ
すべて大文字にしたいのですがどうすればよいですか?
誰か教えてください
例 aaBfffDhhhhUmm

マクロ実行
  AA_BFFF_DHHHH_UMM
このようにしたいのですが、よろしくお願いします

【19188】Re:マクロ
回答  ichinose  - 04/10/24(日) 22:01 -

引用なし
パスワード
   ▼fff さん:
こんばんは。

>マクロを用いて、半角の大文字があれば、その前にアンダーバーを入れ
>すべて大文字にしたいのですがどうすればよいですか?
>誰か教えてください
>例 aaBfffDhhhhUmm
>
>マクロ実行
>  AA_BFFF_DHHHH_UMM
>このようにしたいのですが、よろしくお願いします
一番目の文字が大文字だった場合も"_"をつけても良いのですか?
下の例は、付けてしまう例ですが、違うのなら、idxをチェックして処理すれば
良いとは思いますが・・・。

'======================================================
Sub test()
  MsgBox cnv_sp("aaBfffDhhhhUmm")
End Sub
'=============================================================
Function cnv_sp(mystr As String) As String
  cnv_sp = ""
  idx = 1
  Do While idx <= Len(mystr)
   If Mid(mystr, idx, 1) Like "[A-Z,a-z]" Then
    If Mid(mystr, idx, 1) = UCase(Mid(mystr, idx, 1)) Then
      cnv_sp = cnv_sp & "_"
      End If
    cnv_sp = cnv_sp & UCase(Mid(mystr, idx, 1))
    End If
   idx = idx + 1
   Loop
End Function

確認してみて下さい。

【19189】Re:文字列の大文字の前に特定文字を挿入...
回答  かみちゃん  - 04/10/24(日) 22:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>マクロを用いて、半角の大文字があれば、その前にアンダーバーを入れ
>すべて大文字にしたいのですがどうすればよいですか?
>誰か教えてください
>例 aaBfffDhhhhUmm
>
>マクロ実行
>  AA_BFFF_DHHHH_UMM

すでに、ichinoseさんからもコメントがついていますが、私も作成してみましたので、書いておきます。

Option Explicit

Sub Macro1()
 Dim strValue As String, strValueTmp As String
 Dim i As Integer
 
 strValue = "aaBfffDhhhhUmm"
 strValueTmp = ""

 For i = 1 To Len(strValue)
  If Asc(Mid(strValue, i, 1)) >= 65 And Asc(Mid(strValue, i, 1)) <= 90 Then
   strValueTmp = strValueTmp & "_" & Mid(strValue, i, 1)
  Else
   strValueTmp = strValueTmp & UCase(Mid(strValue, i, 1))
  End If
 Next
 '変換結果表示
 MsgBox "変換前 " & strValue & vbCrLf & "変換後 " & strValueTmp
End Sub

【19190】Re:マクロ
発言  ichinose  - 04/10/24(日) 22:34 -

引用なし
パスワード
   >こんばんは。
>
>>マクロを用いて、半角の大文字があれば、その前にアンダーバーを入れ
>>すべて大文字にしたいのですがどうすればよいですか?
>>誰か教えてください
>>例 aaBfffDhhhhUmm
>>
>>マクロ実行
>>  AA_BFFF_DHHHH_UMM
>>このようにしたいのですが、よろしくお願いします
>一番目の文字が大文字だった場合も"_"をつけても良いのですか?
>下の例は、付けてしまう例ですが、違うのなら、idxをチェックして処理すれば
>良いとは思いますが・・・。
>
>'======================================================
>Sub test()
>  MsgBox cnv_sp("aaBfffDhhhhUmm")
>End Sub
>'=============================================================
>Function cnv_sp(mystr As String) As String
  cnv_sp = ""
  idx = 1
  Do While idx <= Len(mystr)
   If Mid(mystr, idx, 1) Like "[A-Z]" Then
    cnv_sp = cnv_sp & "_"
    End If
   cnv_sp = cnv_sp & UCase(Mid(mystr, idx, 1))
   idx = idx + 1
   Loop
>End Function
↑これでよかったかもしれません・・・。
失礼しました。

>
>確認してみて下さい。

【19222】Re:マクロ
回答  [名前なし]  - 04/10/25(月) 22:35 -

引用なし
パスワード
   ▼fff さん:
これではどうでしょうか。

Sub Test()
 Dim i As Integer, ResultStr As String
 
 ResultStr = "aaBfffDhhhhUmm"

 For i = Asc("A") To Asc("Z")
  ResultStr = Replace(ResultStr, Chr(i), "_" & Chr(i))
 Next

 ResultStr = UCase(ResultStr)

 MsgBox ResultStr
End Sub

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