出産前後の痔にはご注意!

エクセルのVBAを使ってシート1の指定セルに打った内容を、マクロを実行するとシート2の指定セルに入力できるようにしました。
プログラムは
s.Cells(r, 1).Copy Sheets("Sheet2").Range("A1")
な感じです。

ここに文字を追加して出力したいのですが、どうすればいいのでしょうか?
シート2にコピー出力される内容に、
『成績 第○位』という文字を追加して出力したいのです。つまり○の部分にシート1で打った内容(例11)を、
シート2では(例『成績 第11位』)という内容を表示したいのですが、どのようなプログラムを追加すればよいのでしょうか?
本当に困っています。どなたか助けてください。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>誰でも使えるものにしたいので・・・



専用ボタンが簡単でしょう。
○マクロ実行ボタンの作成
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VB …マクロ実行ボタンの作成

このようなボタン以外に、オートシェイプで作成した図形でもマクロの登録ができます。

この回答への補足

本当に助けていただいて嬉しい限りです。
そういえば書くのを忘れていたのですが、
先ほどの質問、『成績第11位』にしたいは解決をしたのですが『成績第11位』の成績という文字の後は同じセル内で改行したいのです。
いわばAlt+Enterキーみたいな機能なのですが・・・
つまり出力が
『成績
 第11位』という内容を出力したいのですが、
改行のプログラムはわかりますでしょうか??
m(_ _)m

補足日時:2005/12/18 15:56
    • good
    • 0

こんにちは。



あまり話が見えていないけれど、こういうのはどうかな?
>行番号が振ってある一番左のセルを押すだけで実行できるとか・・・

灰色の行番号のところをクリックします。
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
    • good
    • 0

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の出番はないでしょう。
    • good
    • 0

Sheets("Sheet2").Range("A1") = "文字列" & s.Cells(r, 1).Text & "文字列"

この回答への補足

大変助かりましたご回答ありがとうございました。
本当に嬉しい限りです。

もしわかればでいいのですがもう1つ質問してもよろしいでしょうか?
今このプログラムは行をしていして、
ツール→マクロ→実行
でマクロを実行させています。
これをにか一つのボタンを押すことで簡単に実行できるようにすることはできないものでしょうか?誰でも使えるものにしたいので・・・
たとえば専用ボタンを作るか、行番号が振ってある一番左のセルを押すだけで実行できるとか・・・
もしわかればお願いいたします。m(_ _)m

補足日時:2005/12/18 14:11
    • good
    • 0

11の部分を変数にしてSheet2の入力したい部分に


="成績 第" & 変数 & "位"にしてはいかがでしょうか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング