- ベストアンサー
特定範囲のセルの最終文字1文字を削除
- VBAを使用して、特定範囲のセルの最終文字を削除する方法を教えてください。
- セルの値が空でない場合にのみ、最終文字を削除するように設定してください。
- エラーが表示される場合は、For Eachループの構文を修正してください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
よく見たら Rangeオブジェクトの代入の仕方もおかしいです。 というより選択した範囲の中のセルを指定しているはずなのに 範囲 を変数に入れようとしているのは意味不明ですね。 Private Sub CommandButton1_Click() Dim r As Range For Each r In Worksheets("Sheet1").Range("J26:J56") If Len(r.Value) > 0 Then r.Value = Left(r.Value, Len(r.Value) - 1) End If Next End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者のエラー原因は、既回答でご指摘の通りで、お粗末。 参考 下記のような、他の方法も勉強したら。 エクセル関数でできる課題だし。 J29:J30に文字列があるとして、右隣セルに結果を出す場合 標準モジュールに Sub test01() Sheets("Sheet1").Range("K25:K30").Formula = "=LEFT(J25,LEN(J25)-1)" End Sub 実行して、結果 J列 K列 werty wert erty ert d123ll d123l pseadq psead 112あ 112 345tyu1 345tyu たった1行です これを選択(対象)としている、セル範囲の列数分だけ繰り返す。
- tsubu-yuki
- ベストアンサー率46% (179/386)
ちょっとした英語の問題ですかねぇ。 「For Each 〇〇 in △△」 ですから、「△△の中のそれぞれの〇〇」ですね。 > Sheet1のJ26からJ56の、セル について処理をしたいわけですから、解釈的には For Each セル In Sheet1のJ26からJ56 です。 > r = Worksheets("Sheet1").Range("J26:J56") と代入しているので、簡略して For Each セル In r と書けますね。 そんなわけで、 Private Sub CommandButton1_Click() Dim r As Range, sh As Range ' Range型の変数に代入するときはSetを使いますよ。 Set r = Worksheets("Sheet1").Range("J26:J56") For Each sh In r If Len(sh.Value) > 0 Then sh.Value = Left(sh.Value, Len(sh.Value) - 1) End If Next End Sub と書けばうまくいくのではないかな、と思いますよ。 ご提示のコードを最大限活かそうと思ったら、 Private Sub CommandButton1_Click() Dim r As Range Worksheets("Sheet1").Range("J26:J56").Select For Each r In Selection If Len(r.Value) > 0 Then r.Value = Left(r.Value, Len(r.Value) - 1) End If Next End Sub こんな感じで、代入しないで 先に「Select」してやると良いかもしれません。
- Chiquilin
- ベストアンサー率30% (94/306)
「End Sub」の後に「Next」がくるのはどう考えてもおかしいでしょう。 「Sub~End Sub」の中に「For ~Next」を入れて下さい。
補足
Chiquilin 様 早速の回答ありがとうございます。 「Sub~End Sub」の中に「For ~Next」を入れて下さい。 この入れ方?がわかりません。 Private Sub CommandButton1_Click() Dim r As Range r = Worksheets("Sheet1").Range("J26:J56") For Each r In Application.Selection If Len(r.Value) > 0 Then r.Value = Left(r.Value, Len(r.Value) - 1) End If Next End Sub
お礼
Chiquilin様 早いご回答ありがとうございます。 完璧に思い通りにできました。 感謝します。 今後もよろしくお願いします。