Excel VBA質問箱 IV

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

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


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

【25625】文字列の桁あわせのマクロを教えてください。 Lee 05/6/8(水) 16:51 質問[未読]
【25626】Re:文字列の桁あわせのマクロを教えてくだ... つん 05/6/8(水) 17:14 発言[未読]
【25627】Re:文字列の桁あわせのマクロを教えてくだ... Lee 05/6/8(水) 17:31 発言[未読]
【25629】Re:文字列の桁あわせのマクロを教えてくだ... Kein 05/6/8(水) 18:07 回答[未読]
【25637】Re:文字列の桁あわせのマクロを教えてくだ... Lee 05/6/9(木) 9:18 質問[未読]
【25639】Re:文字列の桁あわせのマクロを教えてくだ... つん 05/6/9(木) 9:45 回答[未読]
【25640】Re:文字列の桁あわせのマクロを教えてくだ... Lee 05/6/9(木) 9:57 質問[未読]
【25641】Re:文字列の桁あわせのマクロを教えてく... 小僧 05/6/9(木) 10:13 回答[未読]
【25642】Re:文字列の桁あわせのマクロを教えてく... Lee 05/6/9(木) 10:29 お礼[未読]
【25645】Re:文字列の桁あわせのマクロを教えてく... Kein 05/6/9(木) 11:21 発言[未読]
【25649】Re:文字列の桁あわせのマクロを教えてくだ... JJ 05/6/9(木) 14:43 回答[未読]

【25625】文字列の桁あわせのマクロを教えてくださ...
質問  Lee  - 05/6/8(水) 16:51 -

引用なし
パスワード
   はじめまして、超初心者の新参者ですがよろしくお願いいたします。
どういう作業をしたいのかというと…

数字コードを入力したとき、セルの書式設定が文字列になっていない場合
頭に0を付けるとセル表示が1になっていたり、セル表示が001になっていてもセル内は1になっていますよね?
それをセル内も001になるようにセルの書式設定を文字列に設定し、
3桁に満たない数値に対しては頭に0を付けて
桁あわせもできるマクロを組みたいんです。
3桁の同じ数字に置き換えるのなら出来るのですが、
桁あわせは出来ません。。。

言いたいことが伝わらないかも知れませんがよろしくお願いいたします。

【25626】Re:文字列の桁あわせのマクロを教えてく...
発言  つん E-MAIL  - 05/6/8(水) 17:14 -

引用なし
パスワード
   ▼Lee さん:
はじめまして。こんにちは^^

>数字コードを入力したとき、セルの書式設定が文字列になっていない場合
>頭に0を付けるとセル表示が1になっていたり、セル表示が001になっていてもセル内は1になっていますよね?
>それをセル内も001になるようにセルの書式設定を文字列に設定し、
>3桁に満たない数値に対しては頭に0を付けて
>桁あわせもできるマクロを組みたいんです。
>3桁の同じ数字に置き換えるのなら出来るのですが、
>桁あわせは出来ません。。。

えと、文字列にしないといけないのでしょうか?
書式設定の、ユーザー定義で「000」ではダメですか?
これなら、3桁以下の数字は頭を「0」で埋められますが・・・

【25627】Re:文字列の桁あわせのマクロを教えてく...
発言  Lee  - 05/6/8(水) 17:31 -

引用なし
パスワード
   ▼つん さん:
>▼Lee さん:
>はじめまして。こんにちは^^
>
>>数字コードを入力したとき、セルの書式設定が文字列になっていない場合
>>頭に0を付けるとセル表示が1になっていたり、セル表示が001になっていてもセル内は1になっていますよね?
>>それをセル内も001になるようにセルの書式設定を文字列に設定し、
>>3桁に満たない数値に対しては頭に0を付けて
>>桁あわせもできるマクロを組みたいんです。
>>3桁の同じ数字に置き換えるのなら出来るのですが、
>>桁あわせは出来ません。。。
>
>えと、文字列にしないといけないのでしょうか?
>書式設定の、ユーザー定義で「000」ではダメですか?
>これなら、3桁以下の数字は頭を「0」で埋められますが・・・

書き込みありがとうございます。
後で違うデータと紐付けするので、数式バーでも3桁表示になっていないとだめなんです。よってユーザー定義ではだめなんで、マクロを組みたいんです。。。

【25629】Re:文字列の桁あわせのマクロを教えてく...
回答  Kein  - 05/6/8(水) 18:07 -

引用なし
パスワード
   こーいうことかな ? 選択範囲を処理します。

Sub Test()
  Dim C As Range

  If TypeName(Selection) <> "Range" Then Exit Sub
  For Each In Selection
   If WorksheetFunction.IsNumber(C.Value) Then
     C.NumberFormat = "@"
     If Len(C.Value) < 3 Then
      C.Value = String(3 - Len(C.Value), "0")
     End If
   End If
  Next
End Sub

べた書きしてますので、うまくいかなかったらゴメン。

【25637】Re:文字列の桁あわせのマクロを教えてく...
質問  Lee  - 05/6/9(木) 9:18 -

引用なし
パスワード
   ▼Kein さん:
>こーいうことかな ? 選択範囲を処理します。
>
>Sub Test()
>  Dim C As Range
>
>  If TypeName(Selection) <> "Range" Then Exit Sub
>  For Each In Selection
>   If WorksheetFunction.IsNumber(C.Value) Then
>     C.NumberFormat = "@"
>     If Len(C.Value) < 3 Then
>      C.Value = String(3 - Len(C.Value), "0")
>     End If
>   End If
>  Next
>End Sub
>
>べた書きしてますので、うまくいかなかったらゴメン。

おはようございます。
早速試してみたところ、
コンパイルエラー
構文エラーと出てしまいました。。。

『For Each In Selection』

この部分がエラーのようです。。。
どうしたらいいのでしょうか?

【25639】Re:文字列の桁あわせのマクロを教えてく...
回答  つん E-MAIL  - 05/6/9(木) 9:45 -

引用なし
パスワード
   おはようございます。
Keinさん、フォローありがとうございました^^

>>Sub Test()
>>  Dim C As Range
>>
>>  If TypeName(Selection) <> "Range" Then Exit Sub
>>  For Each In Selection
>>   If WorksheetFunction.IsNumber(C.Value) Then
>>     C.NumberFormat = "@"
>>     If Len(C.Value) < 3 Then
>>      C.Value = String(3 - Len(C.Value), "0")
>>     End If
>>   End If
>>  Next
>>End Sub
>>
>>べた書きしてますので、うまくいかなかったらゴメン。
>
>おはようございます。
>早速試してみたところ、
>コンパイルエラー
>構文エラーと出てしまいました。。。
>
>『For Each In Selection』
>
>この部分がエラーのようです。。。
>どうしたらいいのでしょうか?

For Each C In Selection

ですね。
エラーの部分が特定されたのですから、
For Each...Next ステートメント
のヘルプを調べてみると、何がおかしいのかわかると思いますよ^^
使用例なんかみると、わかりやすいです。

【25640】Re:文字列の桁あわせのマクロを教えてく...
質問  Lee  - 05/6/9(木) 9:57 -

引用なし
パスワード
   つん さん:

早速訂正し、試してみたところ
1(1桁)は0に10(2桁)は00になってしまいました。。。
再度、訂正箇所を教えてください。。。

【25641】Re:文字列の桁あわせのマクロを教えてく...
回答  小僧  - 05/6/9(木) 10:13 -

引用なし
パスワード
   ▼Lee さん、みなさま:

こんにちは。

>再度、訂正箇所を教えてください。。。

Kein さんのコードの

>>C.Value = String(3 - Len(C.Value), "0")

→C.Value = String(3 - Len(C.Value), "0") & C.Value

でいかがでしょうか。

【25642】Re:文字列の桁あわせのマクロを教えてく...
お礼  Lee  - 05/6/9(木) 10:29 -

引用なし
パスワード
   皆様

アドバイスありがとうございました。
無事に桁あわせが出来るようになりました。。。
次の課題の時にも
ご協力いただけますよう
よろしくお願いいたします。

【25645】Re:文字列の桁あわせのマクロを教えてく...
発言  Kein  - 05/6/9(木) 11:21 -

引用なし
パスワード
   べた書きしていろいろミスった点があったことをお詫びします。

【25649】Re:文字列の桁あわせのマクロを教えてく...
回答  JJ  - 05/6/9(木) 14:43 -

引用なし
パスワード
   試してみて下さい。

myR = Range("a65536").End(xlUp).Row
For i = 1 To myR                    
 If Len(Cells(i, 1)) < 3 Then
   m = 3 - Len(Cells(i, 1))
   Cells(i, 1).NumberFormatLocal = "@"
   Cells(i, 1) = Application.WorksheetFunction.Rept("0", m) & Cells(i, 1).Value
 End If
Next

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