過去ログ

                                Page      76
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼FormulaR1C1について  こうき 02/9/12(木) 18:40
   ┗Re:FormulaR1C1について  こうちゃん 02/9/12(木) 18:56
      ┗Re:FormulaR1C1について  こうき 02/9/12(木) 19:30
         ┣Re:FormulaR1C1について  こうちゃん 02/9/12(木) 20:11
         ┗Re:FormulaR1C1について(おまけ)  こうちゃん 02/9/12(木) 20:16
            ┗Re:FormulaR1C1について(おまけ)  こうき 02/9/13(金) 16:45

 ───────────────────────────────────────
 ■題名 : FormulaR1C1について
 ■名前 : こうき
 ■日付 : 02/9/12(木) 18:40
 -------------------------------------------------------------------------
   2つのセルの数字
(例えば、Range("A1")=10,Range("A2")=20だとして、
Range("A3")="Range("A1")"&"Range("A2")"=1020という形)
を結合したいのですが、マクロの記録を行うと、
Range("A3").FormulaR1C1="=R[1]C[1]&R[2]C[1]"
となりました。

で、行と列を変数にして実行したところ、
結果は、#NAME?と出てきました。
FormulaR1C1は変数では使えないのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:FormulaR1C1について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/12(木) 18:56  -------------------------------------------------------------------------
   こうき さん、こんにちは

>FormulaR1C1は変数では使えないのでしょうか?
使えますよ、どんな書き方したのでしょうか?
それをアップするとレスがつきやすいと思いますよ。

まあ、こんな感じでどうでしょ?

Sub test()
 Dim a As Integer
 Dim b As Integer

 a = 1
 b = 2

 'これは相対参照なのでActiveCellからみた行と列を指定します
 Range("A3").FormulaR1C1 = "=R[" & a & "]C[" & a & "] & R[" & b & "]C[" & a & "]"

 '絶対参照の場合はこんな感じ
 'Range("A3").FormulaR1C1 = "=R" & a & "C" & a & " & R" & b & "C" & a

End Sub
 ───────────────────────────────────────  ■題名 : Re:FormulaR1C1について  ■名前 : こうき  ■日付 : 02/9/12(木) 19:30  -------------------------------------------------------------------------
   こうちゃん さん、こんばんわ。

> 'これは相対参照なのでActiveCellからみた行と列を指定します
> Range("A3").FormulaR1C1 = "=R[" & a & "]C[" & a & "] & R[" & b & "]C[" & a & "]"

すいません。相対参照ということも知りませんでした。
となると困ったことになるんですが、実はsheet1の2つのセルの中身を結合してsheet2に表示したいのです。
今のコードは、

Sub 表示
Dim r As Long
Worksheets("sheet1").Activate
    Range("c3").Activate
    ActiveCell.End(xlDown).Select
    r = Selection.Row
  With Sheets("sheet1")
   u1= .Cells(r, 7)
   u2 = .Cells(r, 8)
   k1 = .Cells(r, 9)
   k2 = .Cells(r, 10)
  End With
Worksheets("sheet2").Activate
  ActiveSheet.Range("D57").Activate
  ActiveCell.Formula1 = "=u1&"" (""&u2&"")"""
  ActiveSheet.Range("G57").Activate
  ActiveCell.Formula1 = "=k1&"" (""&k2&"")"""
End Sub

と書いております。
先ほどの質問では書いてなかったのですが、表示させたいのは、
シート1のD57に「k1 (k2)」という形で、シート1のD58に「u1 (u2)」という形です。

こういう場合、どうしたらよいのでしょうか?
はじめからこう書いておけばよかったですね。
二度手間になってしまって、こうちゃんさん、ごめんなさい!
 ───────────────────────────────────────  ■題名 : Re:FormulaR1C1について  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/12(木) 20:11  -------------------------------------------------------------------------
   こうき さん、こんばんは

>すいません。相対参照ということも知りませんでした。
>となると困ったことになるんですが、実はsheet1の2つのセルの中身を結合してsheet2に表示したいのです。

中身(値)を表示したいのならこんな感じでいいんじゃないですか?

>Sub 表示
>Dim r As Long
>Worksheets("sheet1").Activate
>    Range("c3").Activate
>    ActiveCell.End(xlDown).Select
>    r = Selection.Row
>  With Sheets("sheet1")
>   u1= .Cells(r, 7)
>   u2 = .Cells(r, 8)
>   k1 = .Cells(r, 9)
>   k2 = .Cells(r, 10)
>  End With
>Worksheets("sheet2").Activate
>  ActiveSheet.Range("D57").Activate
>  ActiveCell.Formula1 = "=u1&"" (""&u2&"")"""
  ActiveCell.Value = u1 & "(" & u2 & ")"
>  ActiveSheet.Range("G57").Activate
>  ActiveCell.Formula1 = "=k1&"" (""&k2&"")"""
  ActiveCell.Value = k1 & "(" & k2 & ")"
>End Sub


値を設定したいのか、計算式を設定したいのかが判然としませんね?

まあ、両方いっときますかぁ^^;

整理すると・・

sheet1の最終行の7列の値+"("+8列の値とsheet1の最終行の9列の値+"("+10列の値を表示するなら、こんな感じ・・

Sub 表示1()
  Dim r As Long
  Dim u1 As Variant
  Dim u2 As Variant
  Dim k1 As Variant
  Dim k2 As Variant

  r = Worksheets("sheet1").Range("c3").End(xlDown).Row
  With Sheets("sheet1")
   u1 = .Cells(r, 7)
   u2 = .Cells(r, 8)
   k1 = .Cells(r, 9)
   k2 = .Cells(r, 10)
  End With
  With Worksheets("sheet2")
    .Range("D57").Value = u1 & "(" & u2 & ")"
    .Range("G57").Value = k1 & "(" & k2 & ")"
  End With
End Sub


最終行のROWを使って、計算式を絶対参照で指定するならこんな感じ・・・

Sub 表示2()
  
  Dim r As Long
  
  r = Worksheets("sheet1").Range("c3").End(xlDown).Row

  Worksheets("sheet2").Range("D57").FormulaR1C1 = _
  "=sheet1!R" & r & "C7 & " & """("" & " & _
  "sheet1!R" & r & "C8 & " & """)"""
  
  Worksheets("sheet2").Range("G57").FormulaR1C1 = _
  "=sheet1!R" & r & "C9 & " & """("" & " & _
  "sheet1!R" & r & "C10 & " & """)"""

End Sub

#変数はちゃんと宣言したほうがいいかも^^;
 ───────────────────────────────────────  ■題名 : Re:FormulaR1C1について(おまけ)  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/12(木) 20:16  -------------------------------------------------------------------------
   相対参照
A1方式  Range("A1")
R1C1方式 R[1]C[1]

絶対参照
A1方式  Range("$A$1")
R1C1方式 R1C1
 ───────────────────────────────────────  ■題名 : Re:FormulaR1C1について(おまけ)  ■名前 : こうき  ■日付 : 02/9/13(金) 16:45  -------------------------------------------------------------------------
   こうちゃん さん、ありがとうございます。
FormulaR1C1についてずいぶん理解が進みました。

昨日のよるから今まではマクロを作成する時間がなかったので
これから作ってみます。

また分からないことが出てきたら質問させていただきます。

それでは
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 76