Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12317 / 13644 ツリー ←次へ | 前へ→

【11011】なぜでしょう(>_<") 初心者 04/2/24(火) 1:56 質問
【11012】Re:なぜでしょう(>_<") りん 04/2/24(火) 8:05 回答
【11050】Re:なぜでしょう(>_<") 初心者 04/2/25(水) 11:20 質問
【11058】Re:なぜでしょう(>_<") アイエネス 04/2/25(水) 19:17 回答
【11068】Re:なぜでしょう(>_<") 初心者 04/2/26(木) 10:52 質問
【11069】Re:なぜでしょう(>_<") Jaka 04/2/26(木) 17:24 発言
【11071】Re:なぜでしょう(>_<") アイエネス 04/2/27(金) 0:55 発言
【11090】Re:なぜでしょう(>_<") 初心者 04/2/27(金) 16:17 発言
【11096】Re:なぜでしょう(>_<") アイエネス 04/2/27(金) 23:33 発言
【11146】Re:なぜでしょう(>_<") 初心者 04/3/1(月) 13:03 お礼
【11065】Re:なぜでしょう(>_<") Kein 04/2/26(木) 0:26 回答

【11011】なぜでしょう(>_<")
質問  初心者  - 04/2/24(火) 1:56 -

引用なし
パスワード
   行 = Columns(2).CurrentRegion.Rows.Count
Selection.Copy
Columns(2).Select
Range(Cells(3, 2), Cells(行)).Select
ActiveSheet.Paste
で計算式をコピーして列に出したいのですが、なぜか横にコピーしてしまいます。
なぜでしょうか?

【11012】Re:なぜでしょう(>_<")
回答  りん E-MAIL  - 04/2/24(火) 8:05 -

引用なし
パスワード
   初心者 さん、こんにちわ。

>で計算式をコピーして列に出したいのですが、なぜか横にコピーしてしまいます。
>なぜでしょうか?

>行 = Columns(2).CurrentRegion.Rows.Count
↑たとえば行 = 5 だとして
>Selection.Copy

>Columns(2).Select
↑この行は意味がない(次でまたSelectしてるから)からパス

>Range(Cells(3, 2), Cells(行)).Select
↑Cells(3,2) = B3セル
 Cells()の引数がひとつの時、インデックス値は左上端から右に向かって連番になっているので、シート上の 5 番目のセルはE1になります。
 行が 5 の時は、Cells(5)="E1"セルを示すので、指定範囲のアドレスは B1:E3

>ActiveSheet.Paste

Selectは使わなくても、処理できます。

たとえば、B列の数式をC列にコピーしたいときは、
 Columns(2).Copy Destination:=Columns(3)
Sheet1のB1セルの数式をSheet2のC1:C15にコピーしたいときは、
  With Worksheets("Sheet2")
   Worksheets("Sheet1").Cells(1, 2).Copy Destination:=.Range(.Cells(1, 3), .Cells(15, 3))
  End With

【11050】Re:なぜでしょう(>_<")
質問  初心者  - 04/2/25(水) 11:20 -

引用なし
パスワード
   実はA1のセルの値が入力されてる部分までをBのセルに入力したくて、
行 = Columns(2).CurrentRegion.Rows.Count
と変数を入力して
B2に計算式を入れそれを最終行まで入力したくて、
Range(Cells(3, 2), Cells(行, 2)).Select
と入力しました。
所が85までしか入力されませんでした。
A1が入力されている最終行までを取得するにはどうすればいいですか?

【11058】Re:なぜでしょう(>_<")
回答  アイエネス  - 04/2/25(水) 19:17 -

引用なし
パスワード
   こんにちは 初心者さん

>実はA1のセルの値が入力されてる部分までをBのセルに入力したくて、
>行 = Columns(2).CurrentRegion.Rows.Count
>と変数を入力して
>B2に計算式を入れそれを最終行まで入力したくて、
>Range(Cells(3, 2), Cells(行, 2)).Select
>と入力しました。
>所が85までしか入力されませんでした。
>A1が入力されている最終行までを取得するにはどうすればいいですか?

A列の値が入っている最終行を取得するには

Range("A65536").End(xlUp).Row

があります。
あと、85までというのは85行目までという意味でしょうか?
もしそうでしたら、86行目が空白ではないですか?
CurrentRegionは空白行と空白列で囲まれた範囲を取得するので、87行目が空白でなくても86行目が空白であれば85行までとなるわけです。

【11065】Re:なぜでしょう(>_<")
回答  Kein  - 04/2/26(木) 0:26 -

引用なし
パスワード
   >A1のセルの値が入力されてる部分までを
A列の最終入力行まで、という意味でしょうか ?
例えば相対参照で数式を入れていくとするなら

Sub Test_MyFomula()
  If Range("B2").HasFormula = False Then Exit Sub
  Range("A2", Range("A65536").End(xlUp)) _
  .Offset(, 1).Formula = Range("B2").Formula
End Sub

てなコードで出来ると思います。A2 に 1 を入力し、A10 までフィルコピー、
B2 に =SUM($B$2:B2) という数式を入れて、上のマクロを実行してみて下さい。
・・そーいうことではないのかな ?

【11068】Re:なぜでしょう(>_<")
質問  初心者  - 04/2/26(木) 10:52 -

引用なし
パスワード
   アイエネスさんKeinさんありがとうございましたm(__)m
アイエネスさんやはり85行目までで止まってしまいます。ちなみにAの列に空白はありません。
Cの列には空白があります。
なぜなのでしょう?


【11069】Re:なぜでしょう(>_<")
発言  Jaka  - 04/2/26(木) 17:24 -

引用なし
パスワード
   書いたコードを全部UPされた方が良いと思います。

【11071】Re:なぜでしょう(>_<")
発言  アイエネス  - 04/2/27(金) 0:55 -

引用なし
パスワード
   ▼初心者 さん:
>アイエネスさんKeinさんありがとうございましたm(__)m
>アイエネスさんやはり85行目までで止まってしまいます。ちなみにAの列に空白はありません。
>Cの列には空白があります。
>なぜなのでしょう?
>

いまいちよくわからないのですが、具体的にどういった処理をなさりたいのでしょうか?
あと、シートの状況も教えて頂くと回答しやすくなります(どこにどういう値が入っているとか)。
コード全て載せて頂くのも回答しやすいです。
とりあえず現状では情報不足です。今のままでは、テストもできないので、テスト環境を作るためにも、全コード、シートの状況などがあった方が早く解決できると思います。

【11090】Re:なぜでしょう(>_<")
発言  初心者  - 04/2/27(金) 16:17 -

引用なし
パスワード
   説明不足ですいません。これがはじめに書いたコードです。
Sub TENZAIK()
  Dim 行 As Integer
  Dim n As Integer
  n = 2
  行 = Columns(1).CurrentRegion.Rows.Count
   Workbooks.OpenText Filename:="ファイル名", _
   DataType:=xlDelimited, Comma:=True
  Application.DisplayAlerts = False
  Columns(2).Select
  Selection.Insert
  Cells(1, n).Value = "得意先"
  Application.CutCopyMode = False
  Cells(2, n).Select
  Selection.FormulaR1C1 = "=MID(RC[-1],1,7)"
  Selection.Copy
  Range(Cells(3, n), Cells(行, n)).Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
  End Sub
"=MID(RC[-1],1,7)"の計算式をB列に出したいのです。
B列に出すときにA列の最終行まで出したいということなのですが・・・

【11096】Re:なぜでしょう(>_<")
発言  アイエネス  - 04/2/27(金) 23:33 -

引用なし
パスワード
   ▼初心者 さん:
>説明不足ですいません。これがはじめに書いたコードです。
>Sub TENZAIK()
>  Dim 行 As Integer
>  Dim n As Integer
>  n = 2
>  行 = Columns(1).CurrentRegion.Rows.Count
>   Workbooks.OpenText Filename:="ファイル名", _
>   DataType:=xlDelimited, Comma:=True
>  Application.DisplayAlerts = False
>  Columns(2).Select
>  Selection.Insert
>  Cells(1, n).Value = "得意先"
>  Application.CutCopyMode = False
>  Cells(2, n).Select
>  Selection.FormulaR1C1 = "=MID(RC[-1],1,7)"
>  Selection.Copy
>  Range(Cells(3, n), Cells(行, n)).Select
>  ActiveSheet.Paste
>  Application.CutCopyMode = False
>  End Sub
>"=MID(RC[-1],1,7)"の計算式をB列に出したいのです。
>B列に出すときにA列の最終行まで出したいということなのですが・・・


とりあえず、F8ボタンでステップインして、変数「行」の値がいくらなのか確認してください。変数の値はローカルウィンドウを表示すれば、一覧できます。あと、変数名の上にカーソルを合わしても表示されると思います。
あと、もしOpenTextで開いたあとのA列の行数を出したいのであれば、変数の設定位置が違います。

【11146】Re:なぜでしょう(>_<")
お礼  初心者  - 04/3/1(月) 13:03 -

引用なし
パスワード
   りんさんアイエネスさんKeinさんありがとうございました^^
皆さんの意見を参考にさして頂いて何とかコードが出来ました。
また、よろしくおねがいしますm(__)m

12317 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free