Excel VBA質問箱 IV

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

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


2569 / 13645 ツリー ←次へ | 前へ→

【67175】セルの値を書きかえる方法を教えて下さい。 あんず 10/11/14(日) 15:36 質問[未読]
【67176】Re:セルの値を書きかえる方法を教えて下さ... Hirofumi 10/11/14(日) 16:03 回答[未読]
【67178】Re:セルの値を書きかえる方法を教えて下さ... あんず 10/11/14(日) 16:32 質問[未読]
【67179】Re:セルの値を書きかえる方法を教えて下さ... かみちゃん 10/11/14(日) 17:04 発言[未読]
【67181】Re:セルの値を書きかえる方法を教えて下さ... あんず 10/11/14(日) 17:25 お礼[未読]
【67180】Re:セルの値を書きかえる方法を教えて下さ... Hirofumi 10/11/14(日) 17:17 回答[未読]
【67182】Re:セルの値を書きかえる方法を教えて下さ... あんず 10/11/14(日) 17:29 お礼[未読]

【67175】セルの値を書きかえる方法を教えて下さい...
質問  あんず  - 10/11/14(日) 15:36 -

引用なし
パスワード
   A1からA5000に数字7ケタのコードが入力されていますが、

途中ランダムに『部: 4000         野球』や『部: 2000         卓球』等と入力されているセルがあります。

こんな感じ↓

A列
部: 4000         野球
8574658
9382655
9382758
0092716
1817465
2958674
部: 2000         卓球
5039273
5837165
5672819
1023857
0487293

この
途中で登場する『部: 4000         野球』を『4000』に、『部: 2000         卓球』を『2000』に書き換える方法を教えて下さい。

【67176】Re:セルの値を書きかえる方法を教えて下...
回答  Hirofumi  - 10/11/14(日) 16:03 -

引用なし
パスワード
   こんなのでは

Option Explicit

Public Sub Sample_1()

  Const cstrChar As String = "部:"
  
  Dim i As Long
  Dim vntData() As Variant
  Dim strData() As Variant
  Dim lngPos As Long
  
  With ActiveSheet
    vntData = Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)).Value
  End With
  
  ReDim strData(1 To UBound(vntData, 1), 1 To 1)
  
  For i = 1 To UBound(vntData, 1)
    lngPos = InStr(1, vntData(i, 1), cstrChar, vbBinaryCompare)
    If lngPos > 0 Then
      strData(i, 1) = CStr(Val(Mid(vntData(i, 1), lngPos + Len(cstrChar))))
    Else
      strData(i, 1) = CStr(vntData(i, 1))
    End If
  Next i
  
  ActiveSheet.Cells(1, "A").Resize(UBound(strData, 1)).Value = strData
  
End Sub

【67178】Re:セルの値を書きかえる方法を教えて下...
質問  あんず  - 10/11/14(日) 16:32 -

引用なし
パスワード
   Hirofumi さん、お返事ありがとうございます!!

しかし、最初の質問に誤りがありました!!

データが入力されている列がA列じゃなくてB列でした!!

教えていただいたマクロの"A"の部分を"B"に変更して実行してみましたが、何も変わりませんでした。
他の修正が必要でしょうか。

教えて下さいm(__)m

【67179】Re:セルの値を書きかえる方法を教えて下...
発言  かみちゃん E-MAIL  - 10/11/14(日) 17:04 -

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

>データが入力されている列がA列じゃなくてB列でした!!
>
>教えていただいたマクロの"A"の部分を"B"に変更して実行してみましたが、何も変わりませんでした。

こちらで、試してみたら、変わりましたよ。
マクロ実行時のアクティブシートは合っていますか?

合っているならば、
何も変わらなかったコードを提示してみてください。
ちなみに、"部:" となっていますが、 "部:"と全角になっているということはありませんか?
その場合は、vbBinaryCompare の部分を vbTextCompare とすれば変換できるかもしれません。

【67180】Re:セルの値を書きかえる方法を教えて下...
回答  Hirofumi  - 10/11/14(日) 17:17 -

引用なし
パスワード
   >データが入力されている列がA列じゃなくてB列でした!!
>
>教えていただいたマクロの"A"の部分を"B"に変更して実行してみましたが、何も変わりませんでした。
>他の修正が必要でしょうか。
>
>教えて下さいm(__)m

基本的にはAをBに代え有れば善いのですが?

"部:"のコロンが全角では?
全角、半角どちらでも善い様に変更も加えました

Option Explicit

Public Sub Sample_1()

  Const cstrChar As String = "部:"
  
  Dim i As Long
  Dim vntData() As Variant
  Dim strData() As Variant
  Dim lngPos As Long
  
  With ActiveSheet
    vntData = Range(.Cells(1, "B"), .Cells(Rows.Count, "B").End(xlUp)).Value
  End With
  
  ReDim strData(1 To UBound(vntData, 1), 1 To 1)
  
  For i = 1 To UBound(vntData, 1)
    lngPos = InStr(1, vntData(i, 1), cstrChar, vbTextCompare)
    If lngPos > 0 Then
      strData(i, 1) = CStr(Val(Mid(vntData(i, 1), lngPos + Len(cstrChar))))
    Else
      strData(i, 1) = CStr(vntData(i, 1))
    End If
  Next i
  
  ActiveSheet.Cells(1, "B").Resize(UBound(strData, 1)).Value = strData
  
End Sub

【67181】Re:セルの値を書きかえる方法を教えて下...
お礼  あんず  - 10/11/14(日) 17:25 -

引用なし
パスワード
   かみちゃんさん、お返事ありがとうございます!!

>ちなみに、"部:" となっていますが、 "部:"と全角になっているということはありませんか?
>その場合は、vbBinaryCompare の部分を vbTextCompare とすれば変換できるかもしれません。


"部:"になっていました!!
上記の通り変換して、思い通りに成功しました!!

しかし、教えていただいたコードで理解出来てない部分がまだありますので、これから勉強したいと思います。
hirofumiさん、かみちゃんさん、ありがとうございましたm(__)m

【67182】Re:セルの値を書きかえる方法を教えて下...
お礼  あんず  - 10/11/14(日) 17:29 -

引用なし
パスワード
   >"部:"のコロンが全角では?
>全角、半角どちらでも善い様に変更も加えました

はぃ、せっかく教えていただいたのに、全角で入力していました。。。

vbTextCompareに書き換えて、うまくいきました!!

ありがとうございましたm(__)m

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