- ベストアンサー
VBA(エクセル)でコピー+文字を足す
エクセルのVBAを使ってシート1の指定セルに打った内容を、マクロを実行するとシート2の指定セルに入力できるようにしました。 プログラムは s.Cells(r, 1).Copy Sheets("Sheet2").Range("A1") な感じです。 ここに文字を追加して出力したいのですが、どうすればいいのでしょうか? シート2にコピー出力される内容に、 『成績 第○位』という文字を追加して出力したいのです。つまり○の部分にシート1で打った内容(例11)を、 シート2では(例『成績 第11位』)という内容を表示したいのですが、どのようなプログラムを追加すればよいのでしょうか? 本当に困っています。どなたか助けてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>誰でも使えるものにしたいので・・・ 専用ボタンが簡単でしょう。 ○マクロ実行ボタンの作成 http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page02.htm#マクロ実行ボタンの作成 このようなボタン以外に、オートシェイプで作成した図形でもマクロの登録ができます。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 あまり話が見えていないけれど、こういうのはどうかな? >行番号が振ってある一番左のセルを押すだけで実行できるとか・・・ 灰色の行番号のところをクリックします。 Sheet2には、A列の上から下にコピーされていきます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range Dim Sh2 As Worksheet Dim c As Range Set Sh2 = Worksheets("Sheet2") If Not Target.Address Like "$#*:$#*" Then Exit Sub If Not IsNumeric(Target.Cells(1, 1).Value) Or _ IsEmpty(Target.Cells(1, 1).Value) Then Exit Sub With Sh2.Range("A1", Sh2.Range("A65536").End(xlUp)) If IsEmpty(.Value) Then .Value = "成績 第" & Target.Cells(1, 1).Value & "位" Else .Offset(1).Value = "成績 第" & Target.Cells(1, 1).Value & "位" End If End With Set Sh2 = Nothing End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
Sheet1のA1が数(A)で、Sheet2のあ1が数(B)の場合 Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= False, Transpose:=FalseのようにA+Bのようにできますが、Sheet2が文字列だとそういう方法はありません。 (1)Sheet1のA1の値を代入し、書式を 第XX位のように設定するか (2)文字列として第と位をXXの前後に結合するより他ありません (1)は Worksheets("Sheet2").Cells(1, "A") = Worksheets("Sheet1").Cells(1, "A") Worksheets("Sheet2").Cells(1, "A").NumberFormat = "第##位" (2)は Sub test02() Worksheets("Sheet2").Cells(1, "A") = "第" & Worksheets("Sheet1").Cells(1, "A") & "位" Worksheets("Sheet2").Cells(1, "A").HorizontalAlignment = xlRight End Sub です。 Copyは好きな人が多く、便利な面もありますが、代入で考えるほうがやさしく、この場合はCopyの出番はないでしょう。
- hana-hana3
- ベストアンサー率31% (4940/15541)
Sheets("Sheet2").Range("A1") = "文字列" & s.Cells(r, 1).Text & "文字列"
補足
大変助かりましたご回答ありがとうございました。 本当に嬉しい限りです。 もしわかればでいいのですがもう1つ質問してもよろしいでしょうか? 今このプログラムは行をしていして、 ツール→マクロ→実行 でマクロを実行させています。 これをにか一つのボタンを押すことで簡単に実行できるようにすることはできないものでしょうか?誰でも使えるものにしたいので・・・ たとえば専用ボタンを作るか、行番号が振ってある一番左のセルを押すだけで実行できるとか・・・ もしわかればお願いいたします。m(_ _)m
- 0slowlykick0
- ベストアンサー率16% (4/24)
11の部分を変数にしてSheet2の入力したい部分に ="成績 第" & 変数 & "位"にしてはいかがでしょうか?
補足
本当に助けていただいて嬉しい限りです。 そういえば書くのを忘れていたのですが、 先ほどの質問、『成績第11位』にしたいは解決をしたのですが『成績第11位』の成績という文字の後は同じセル内で改行したいのです。 いわばAlt+Enterキーみたいな機能なのですが・・・ つまり出力が 『成績 第11位』という内容を出力したいのですが、 改行のプログラムはわかりますでしょうか?? m(_ _)m