Page 378 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼教えて下さい。 uuu 02/11/19(火) 13:45 ┗Re:教えて下さい。 つん 02/11/19(火) 14:48 ┣ありがとうございました! uuu 02/11/20(水) 14:23 ┗またまた教えて下さい! uuu 02/11/20(水) 14:43 ┗Re:またまた教えて下さい! つん 02/11/20(水) 15:15 ┣ありがとうございます〜 uuu 02/11/20(水) 15:27 ┗繰り返し・・。 uuu 02/11/22(金) 13:44 ┗Re:繰り返し・・。 つん 02/11/22(金) 14:02 ┗失礼しました・・ uuu 02/11/22(金) 14:12 ┗Re:失礼しました・・ つん 02/11/22(金) 14:25 ┗Re:失礼しました・・ uuu 02/11/22(金) 14:46 ─────────────────────────────────────── ■題名 : 教えて下さい。 ■名前 : uuu ■日付 : 02/11/19(火) 13:45 -------------------------------------------------------------------------
始めて投稿します。 突然ですが、教えて下さい! 例えば range("A1")に "NNNNNNNNN" と文字列があったとします。 VBAを使って range("A1")に"N"、range("B1")に"N"、range("C1")に"N"・・・。と表示したいのです。。 前回の似た例を見させて頂いたのですが、わかりません。 簡単な方法で是非お願いします。 |
こんにちは。 >例えば range("A1")に "NNNNNNNNN" >と文字列があったとします。 >VBAを使って range("A1")に"N"、range("B1")に"N"、range("C1")に"N"・・・。と表示したいのです。。 >前回の似た例を見させて頂いたのですが、わかりません。 >簡単な方法で是非お願いします。 一文字ずつばらして、順に横に並べていくっちゅーことですよね? こんな感じかな? Sub test() Dim i As Long Dim strWord As String strWord = Range("A1").Value For i = 1 To Len(strWord) Cells(1, i).Value = Mid(strWord, i, 1) Next i End Sub お試しくださいませ。 |
つんさん 素晴らしい☆ ありがとうございました! |
今お礼をしたばかりなのですが、もう1つお聞きしても 良いでしょうか・・。 自分で考えていてやはり限界がありました。 初心者なので是非教えて下さい! 昨日お聞きしたのと似ているのですが、 セルA1にNNNNNとあったら全角か半角かを識別して ・全角の場合 A1に”N”、A3に”N”、A5に”N”・・・ つまり、一つセルを飛ばして反映させたいのです。 ・半角の場合は A1に"N"、A2に"N"、A3に"N"・・・ 前回教えて頂いた方法です・・。 セルA1には全角と半角が混じる事はありません。 宜しくお願いします! |
どもども >昨日お聞きしたのと似ているのですが、 >セルA1にNNNNNとあったら全角か半角かを識別して >・全角の場合 > A1に”N”、A3に”N”、A5に”N”・・・ > つまり、一つセルを飛ばして反映させたいのです。 >・半角の場合は > A1に"N"、A2に"N"、A3に"N"・・・ > 前回教えて頂いた方法です・・。 >セルA1には全角と半角が混じる事はありません。 >宜しくお願いします! こんな感じかにゃ? Sub test() Dim strWord As String Dim i As Long strWord = Range("a1").Value If LenB(strWord) = LenB(StrConv(strWord, vbFromUnicode)) Then For i = 1 To Len(strWord) Cells(1, i * 2 - 1).Value = Mid(strWord, i, 1) Next i Else For i = 1 To Len(strWord) Cells(1, i).Value = Mid(strWord, i, 1) Next i End If End Sub LenB関数は、半角も全角でも1文字で2バイトを返すんだけど、 StrConv(strWord, vbFromUnicode)とすると、半角は1文字で1バイトを返します。 それで、全角か半角か判断してみました。 うーん、こんな説明ではわからんよな・・ヘルプ読んでみてちょ♪ |
ありがとうございます!! 早速試した所、完璧な動きでした〜。。 感謝感謝です。 |
2日ぶりの登場です。 又また壁にぶつかってしまいました。 と、言うか進んでいません。。 先日の続きなのですが、 下記の場合はセルA1に限っていますが、 例えばセルA1〜D15と言う範囲で 下記の処理を繰り返したい時にはどういう 風になるのでしょうか・・・。 宜しくお願いします!! > >Sub test() > > Dim strWord As String > Dim i As Long > > strWord = Range("a1").Value > > If LenB(strWord) = LenB(StrConv(strWord, vbFromUnicode)) Then > For i = 1 To Len(strWord) > Cells(1, i * 2 - 1).Value = Mid(strWord, i, 1) > Next i > Else > For i = 1 To Len(strWord) > Cells(1, i).Value = Mid(strWord, i, 1) > Next i > End If > > >End Sub > >LenB関数は、半角も全角でも1文字で2バイトを返すんだけど、 >StrConv(strWord, vbFromUnicode)とすると、半角は1文字で1バイトを返します。 >それで、全角か半角か判断してみました。 >うーん、こんな説明ではわからんよな・・ヘルプ読んでみてちょ♪ |
こんにちは >下記の場合はセルA1に限っていますが、 >例えばセルA1〜D15と言う範囲で これはどういう意味でしょ?A1からD15に入ってるデータに対して処理するってことですかね? でも、まずA1に処理すると、1列目はA1のデータが分割して入ってしまうので、 B1〜D1までのデータは消えてしまうことになりますね? それとも、A1のデータを、A1からD15の範囲に一文字ずつバラすってことやろか? |
大変失礼しました。 A1からA15です!! なぜ”D”なんて打ってしまったのでしょ〜。。 宜しくお願いします。 |
uuu さん: >A1からA15です!! >なぜ”D”なんて打ってしまったのでしょ〜。。 にゃはは♪わかりました。 もう一つカウント用の変数をつくって、15回分あの処理を繰り返します。 Dim k As Long For k = 1 To 15 'この間に、前回の処理をまるまるつっこみます。 Next k 処理するデータの変数への代入は、行番号を一つずつ増やさないといけないので strWord = Cells(k, 1).Value こんな感じです。もちろん、For k = 1 to 15 のループ内に入れてね。 中の処理も、行番号を指定する部分変更させる必要があります。 |
▼つん さん: すごい!! 今、試して見たところ完璧でした。。 思っていた通りのものができました!! ありがとうございました。 又お願いします。。 |