過去ログ

                                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"・・・。と表示したいのです。。
前回の似た例を見させて頂いたのですが、わかりません。
簡単な方法で是非お願いします。
 ───────────────────────────────────────  ■題名 : Re:教えて下さい。  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/19(火) 14:48  -------------------------------------------------------------------------
   こんにちは。

>例えば 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

お試しくださいませ。
 ───────────────────────────────────────  ■題名 : ありがとうございました!  ■名前 : uuu  ■日付 : 02/11/20(水) 14:23  -------------------------------------------------------------------------
   つんさん
素晴らしい☆
ありがとうございました!
 ───────────────────────────────────────  ■題名 : またまた教えて下さい!  ■名前 : uuu  ■日付 : 02/11/20(水) 14:43  -------------------------------------------------------------------------
   今お礼をしたばかりなのですが、もう1つお聞きしても
良いでしょうか・・。
自分で考えていてやはり限界がありました。
初心者なので是非教えて下さい!

昨日お聞きしたのと似ているのですが、
セルA1にNNNNNとあったら全角か半角かを識別して
・全角の場合
A1に”N”、A3に”N”、A5に”N”・・・
つまり、一つセルを飛ばして反映させたいのです。
・半角の場合は
A1に"N"、A2に"N"、A3に"N"・・・
前回教えて頂いた方法です・・。

セルA1には全角と半角が混じる事はありません。
宜しくお願いします!
 ───────────────────────────────────────  ■題名 : Re:またまた教えて下さい!  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/20(水) 15:15  -------------------------------------------------------------------------
   どもども

>昨日お聞きしたのと似ているのですが、
>セル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バイトを返します。
それで、全角か半角か判断してみました。
うーん、こんな説明ではわからんよな・・ヘルプ読んでみてちょ♪
 ───────────────────────────────────────  ■題名 : ありがとうございます〜  ■名前 : uuu  ■日付 : 02/11/20(水) 15:27  -------------------------------------------------------------------------
   ありがとうございます!!
早速試した所、完璧な動きでした〜。。
感謝感謝です。
 ───────────────────────────────────────  ■題名 : 繰り返し・・。  ■名前 : uuu  ■日付 : 02/11/22(金) 13:44  -------------------------------------------------------------------------
   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バイトを返します。
>それで、全角か半角か判断してみました。
>うーん、こんな説明ではわからんよな・・ヘルプ読んでみてちょ♪
 ───────────────────────────────────────  ■題名 : Re:繰り返し・・。  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/22(金) 14:02  -------------------------------------------------------------------------
   こんにちは

>下記の場合はセルA1に限っていますが、
>例えばセルA1〜D15と言う範囲で

これはどういう意味でしょ?A1からD15に入ってるデータに対して処理するってことですかね?
でも、まずA1に処理すると、1列目はA1のデータが分割して入ってしまうので、
B1〜D1までのデータは消えてしまうことになりますね?


それとも、A1のデータを、A1からD15の範囲に一文字ずつバラすってことやろか?
 ───────────────────────────────────────  ■題名 : 失礼しました・・  ■名前 : uuu  ■日付 : 02/11/22(金) 14:12  -------------------------------------------------------------------------
   大変失礼しました。
A1からA15です!!
なぜ”D”なんて打ってしまったのでしょ〜。。
宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:失礼しました・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/22(金) 14:25  -------------------------------------------------------------------------
   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 のループ内に入れてね。
中の処理も、行番号を指定する部分変更させる必要があります。
 ───────────────────────────────────────  ■題名 : Re:失礼しました・・  ■名前 : uuu  ■日付 : 02/11/22(金) 14:46  -------------------------------------------------------------------------
   ▼つん さん:

すごい!!
今、試して見たところ完璧でした。。
思っていた通りのものができました!!
ありがとうございました。

又お願いします。。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 378