Excel VBA質問箱 IV

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

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


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

【76626】セル内の文字の一部を除去 とら 15/2/19(木) 11:05 質問[未読]
【76627】Re:セル内の文字の一部を除去 カリーニン 15/2/19(木) 23:15 発言[未読]
【76628】Re:セル内の文字の一部を除去 カリーニン 15/2/19(木) 23:17 発言[未読]
【76629】Re:セル内の文字の一部を除去 カリーニン 15/2/19(木) 23:24 発言[未読]
【76650】Re:セル内の文字の一部を除去 とら 15/2/23(月) 18:16 お礼[未読]

【76626】セル内の文字の一部を除去
質問  とら  - 15/2/19(木) 11:05 -

引用なし
パスワード
   いつもお世話になっております。
教えて頂けると助かります。

セル内の文字の一部の除去方法について方法がわかりません。
「1234567890」という文字がA1セルにあったとして、5文字目から太字にしているとします。
A1セルの文字を2文字目から2文字除去したいです。

方法1
Range("A1") = Left(Range("A1"), 1) & Mid(Range("A1"), 4)
上記の方法だと太字が通常文字になってしまうのでNG

方法2
Range("A1").Characters(2, 2).Text = ""
この方法が理想でしたがセル内にある文字数が300以上?ぐらいになると
何故か機能しなくなるのでNG

文字を除去した後に、太字にし直すという方法もあるのですが、仕様的に
この方法は使えません。

他に方法あるでしょうか?
宜しくお願いします。

【76627】Re:セル内の文字の一部を除去
発言  カリーニン  - 15/2/19(木) 23:15 -

引用なし
パスワード
   >Range("A1") = Left(Range("A1"), 1) & Mid(Range("A1"), 4)

作業セルを使わないで同じセルで作業するとセルの文字数とループの数が合わなくなりますよ。

とりあえず、の案です。
他の回答者からもっとマシなレスが付くまでの繋ぎです。

Sub test1()
Dim mycell As Range
Dim sagyoucell As Range
Dim cellstr As String
Dim i As Long
Dim j As Long
 Set sagyoucell = ActiveSheet.Cells(1, 1)
 Set mycell = ActiveCell
 cellstr = ""
 For i = 1 To Len(mycell.Value)
  If i < 2 Or i > 2 + 2 - 1 Then cellstr = cellstr & Mid(mycell.Value, i, 1)
 Next i
 With sagyoucell
  .NumberFormatLocal = "@"
  .Value = cellstr
 End With
 j = 0
 For i = 1 To Len(mycell.Value)
  If i < 2 Or i > 2 + 2 - 1 Then
   j = j + 1
   sagyoucell.Characters(Start:=j, Length:=1).Font.Color = mycell.Characters(Start:=i, Length:=1).Font.Color
  End If
 Next i
 sagyoucell.Copy mycell
 sagyoucell.Clear
 Set sagyoucell = Nothing
 Set mycell = Nothing
End Sub

【76628】Re:セル内の文字の一部を除去
発言  カリーニン  - 15/2/19(木) 23:17 -

引用なし
パスワード
   >>Range("A1") = Left(Range("A1"), 1) & Mid(Range("A1"), 4)

>作業セルを使わないで同じセルで作業するとセルの文字数とループの数が合わなくなりますよ。

よく見たらループ作業では無かったですね。失礼しました。

【76629】Re:セル内の文字の一部を除去
発言  カリーニン  - 15/2/19(木) 23:24 -

引用なし
パスワード
   ↑のコードは文字色のみ考慮したもので不備がありました。
文字色、太文字、斜字体の3点を考慮した改造版です。

Sub test()
Dim mycell As Range
Dim sagyoucell As Range
Dim cellstr As String
Dim i As Long
Dim j As Long
 Set sagyoucell = ActiveSheet.Cells(1, 1)
 Set mycell = ActiveCell
 cellstr = ""
 For i = 1 To Len(mycell.Value)
  If i < 2 Or i > 2 + 2 - 1 Then cellstr = cellstr & Mid(mycell.Value, i, 1)
 Next i
 With sagyoucell
  .NumberFormatLocal = "@"
  .Value = cellstr
 End With
 j = 0
 For i = 1 To Len(mycell.Value)
  If i < 2 Or i > 2 + 2 - 1 Then
   j = j + 1
   With sagyoucell.Characters(Start:=j, Length:=1).Font
    .Color = mycell.Characters(Start:=i, Length:=1).Font.Color
    .Bold = mycell.Characters(Start:=i, Length:=1).Font.Bold
    .Italic = mycell.Characters(Start:=i, Length:=1).Font.Italic
   End With
  End If
 Next i
 sagyoucell.Copy mycell
 sagyoucell.Clear
 Set sagyoucell = Nothing
 Set mycell = Nothing
End Sub

【76650】Re:セル内の文字の一部を除去
お礼  とら  - 15/2/23(月) 18:16 -

引用なし
パスワード
   カリーニン様

アイデアありがとうございます。
私ももう少し考えてみます。

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