電子書籍の厳選無料作品が豊富!

こんにちは

Range("A1")に仮に☆が入力してあって(A1は好みの1文字を入力できるようになってます)
その☆2個分だと&でつなげてこのようにしてます 
一応☆が一個以上入力してあっても一個とするために
Leftを使っています
Range("A2") = Left(Range("A1"), 1) & Left(Range("A1"), 1)
これでRange("A2")は☆が2個になります

でも、いかにもこれは力任せですよね。素人感100%です
もし、☆が10個だと、その分だけ&でつなげないとだめです
マクロがよこに長くなってしまいます

Left(Range("A1"), 1)の10個分を表現するのに他の方法はありますか
条件付き書式に似たやり方があるようですが、マクロでやりたいのですけど

A 回答 (2件)

Option Explicit



Sub Main()
Dim src As String
Dim dest As String
Dim i As Integer
src = "☆"
dest = ""
For i = 0 To 10 - 1
dest = dest & src
Next
MsgBox (dest)

'繰り返しに慣れてほしいからこうしたけど、実はこれだけでもできたりする(汗

dest = String(10, "●")
MsgBox (dest)

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます

10 - 1がちょっと難しかったですけど
dest = dest & src なので
10をどこかのセルで指定するなら
9まではdest = dest & src ということで
10 - 1なんですね
なぜFor Nextが0から始まるのかは、実際に動かしてみて考えます

Stringは as string でしか 使ったことがありません
dest = String(10, "●")は簡単ですね

マクロは知恵を働かせないと進歩しませんね
やってみます
ありがとうございました

お礼日時:2017/10/02 16:29

ワークシート関数のREPT関数を使うとか。



=WorksheetFunction.Rept(Left(Range("A1"),1), 10)
    • good
    • 1
この回答へのお礼

ありがとうございます

最近'WorksheetFunction.CountBlankを覚えたのですが
WorksheetFunction.Reptは初めてです
一行で済むのでこれは便利な関数です
みなさん色々な関数がパッと浮かんでくるようで
すごいですね

お礼日時:2017/10/02 16:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!