Excel VBA質問箱 IV

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

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


157 / 3841 ページ ←次へ | 前へ→

【79323】指定したセルに貼り付け
質問  アリエス  - 17/7/14(金) 23:41 -

引用なし
パスワード
   下記に記入してあるエクセルマクロを作成したいのですが教えて頂けますでしょうか。

1.日付を指定する。
※日付は単数または複数がある。
2.推移図1.xlsを開く。
sheet1のF32からAJ32まで日付が1日〜31まで入力してあります。
sheetは複数有り、sheet1と同様のセルをコピーさせます。
日付が入力してある、1行下にデータが入力してあり、
指定した日付のデータをコピーする。

3.推移図2を開く。
推移図1同様に、sheet1のF32からAJ32まで日付が1日〜31まで入力してあります。
sheetは推移図1と同様の名前のsheetがあります。
日付が入力してある、1行下にデータを入力する欄があり、指定したシートの
データ欄に貼り付けます。

※項目1について勉強も兼ねてInputBoxに入力とワークブックに日付を入力する2パターンで作成したい。
・ツリー全体表示

【79322】Re:オブジェクトエラーの理由
質問  γ  - 17/7/10(月) 21:07 -

引用なし
パスワード
   ちょっとお聞きしますが、
そのコードは、何から何までを繰り返しているのですか?
説明してもらえますか?

# エラーが出ないということと、
# 目的が達せられていることは、
# 同じとは限りませんよ。
・ツリー全体表示

【79321】Re:オブジェクトエラーの理由
お礼  oshiete  - 17/7/10(月) 13:00 -

引用なし
パスワード
   ▼γ さん:

すいません、自分が行と列を反対で覚えてました。
下記のように記載したら出来ました。

Sub test()


Dim i As Long

For i = 1 To Cells(1, 1).End(xlDown)

If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
Range(Cells(i, 2), Cells(i + 1, 2)).Interior.ColorIndex = 3


End If

Next i

End Sub
・ツリー全体表示

【79320】Re:オブジェクトエラーの理由
お礼  oshiete  - 17/7/10(月) 12:58 -

引用なし
パスワード
   ▼カリーニン さん:

わかりました。
ありがとうございます。
行と列の定義を勘違いしてました。
下記のように書き換えたらできました↓↓↓

Sub test()

 Dim i As Long
 For i = 1 To Cells(1, 1).End(xlDown)

  If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
  Range(Cells(i, 2), Cells(i + 1, 2)).Interior.ColorIndex = 3

  End If

 Next i

End Sub
・ツリー全体表示

【79319】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/10(月) 10:26 -

引用なし
パスワード
   > >もで行指定の.row つけてないと列になりますよね??

意味不明です。

> Cells(1, 1).End(xlDown)

これの意味は分かってますか?ヘルプ等で調べてみましたか?

γさんのレスは見られましたか?
・ツリー全体表示

【79318】Re:オブジェクトエラーの理由
回答  oshiete  - 17/7/10(月) 9:39 -

引用なし
パスワード
   ▼カリーニン さん:
>>>>For i = 1 To Cells(1, 1).End(xlDown) ←これ列方向であってますよね?
>
>行方向ですが・・・。


>もで行指定の.row つけてないと列になりますよね??
・ツリー全体表示

【79317】Re:オブジェクトエラーの理由
発言  γ  - 17/7/9(日) 6:43 -

引用なし
パスワード
   1. 行と列の取り違え。
2.For i = 1 To Cells(1, 1).End(xlDown).Row
  と行番号をループさせたいのではないか。
3. Cells(3, i)(3, i + 1) は意図と異なるものでしょう。
  Cells(3, i)(3, i + 1)は、Cells(3, i)を起点として、
  そこから(3, i + 1)の単独セルを参照するものです。
 
  セル範囲の指定方法は基本中の基本です。
  ただし、色々な方法がありますから慣れが必要です。
  基本テキストや、
  ht tp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html
  のようなサイトを参照して下さい。

思いつきで自己流のコードを書く前に、基本テキストを参照しながら、
それをまねてやっていく段階のようにお見受けします。
ステップを踏んでやっていくことは誰にも必要なことです。
頑張って下さい。 
・ツリー全体表示

【79316】Re:イベント管理:複数ファイルのイベント...
お礼  VBA 初心者  - 17/7/8(土) 16:39 -

引用なし
パスワード
   γさん

返信ありがとうございます。
また、貴重なヒントをいただき、ありがとうございます。

すいません。そのような意図はなかったのですが、挑発しているような文面で投稿していたとは、皆様に失礼なことをしました。本当にすいません。

また、マナーの1つと言える行と列の表示の配慮が足らず申し訳ありませんでした。
至らぬ点があり、皆様を不快にさせてしまい本当にすいませんでした。

そんな中、返信いただけたマナさん、γさん、ご親切にありがとうございました。
・ツリー全体表示

【79315】Re:イベント管理:複数ファイルのイベント...
発言  γ  - 17/7/8(土) 15:47 -

引用なし
パスワード
   DateDiff関数を使って、基準日からの月数を求めれば、
横方向の位置がわかるはずです。
そういう考え方で対応が可能だと思います。

私も時々こちらでコメントしている者ですが、
ちょっと敬遠しましたね。原因は、
> VBAでプログラムするのは無理なのかもしれません
などと挑発するようなある種の「あざとさ」でしょうか(失礼)。
もっとフラットに、「ここまでトライしたけれど、
ここにつきあたっています。教えてください。」
というような質問をされたほうがよいですね。

それと今後の質問の際に注意いただきたいことをメモします。
行、列位置をきちんとわかるようにしたほうがよいです。
> イベント1:XX年XX月XX日
などという記述は雑過ぎます。
・ツリー全体表示

【79314】Re:イベント管理:複数ファイルのイベント...
お礼  VBA初心者  - 17/7/8(土) 13:45 -

引用なし
パスワード
   マナさん、

丁寧に返信ありがとうございました。
おっしゃるとおり、丸投げのような質問をしており、
まだまだ勉強不足にもかかわらず、楽をしようとしてしまっておりました。
いただいたコードをもとに、いろいろ勉強させていただきたいと思います。
お時間を割いていただき、ありがとうございました。
・ツリー全体表示

【79313】Re:イベント管理:複数ファイルのイベント...
発言  マナ  - 17/7/8(土) 12:12 -

引用なし
パスワード
   ▼VBA初心者 さん:

>初投稿でしたので、ご質問の仕方が悪かったのか、

VBA質問箱基本ポリシー
ht tp://www.vbalab.net/bbspolicy.html

「丸投げ」っぽいと、回答しにくいです。

最初に書きましたが、まずは現在のコードを理解することが必要です。
そうすれば、ご自身で改善できることもあるはずです。

追加の2点についても、それほど難易度は高くないです。
・ツリー全体表示

【79312】Re:イベント管理:複数ファイルのイベント...
お礼  VBA初心者  - 17/7/8(土) 10:46 -

引用なし
パスワード
   マナさん
本当にご親切に例文を作成いただきありがとうございました。
初投稿でしたので、ご質問の仕方が悪かったのか、それとも本当にできないことを聞いていたのかわかりませんでした。

早速、いただいた例文のプログラムで挙動を見させていただき、やりたいことが実現できそうな希望を持てました。ありがとうございます。
大変厚かましく、申し訳ないのですが2点追加でお聞きしてもよいでしょうか?
・日付(月)は、年を区別できるようにできないでしょうか?
・該当月にイベントを「〇」ではなくて、そのイベント名をそのままセルに入力できないでしょうか?

3年をまたぐプロジェクトの各イベントの発生状況を管理できればと考えており、VBAが使用できると大変助かると思案しているところなのです。
・ツリー全体表示

【79311】Re:オブジェクトエラーの理由
発言  γ  - 17/7/8(土) 7:37 -

引用なし
パスワード
   基本的なことをもう一度確認してください。
Cells(行、列)です。
相手が人間なら忖度してくれるかもしれないが、
機械は融通がきかないが、言われたことをキチンとやってくれる。
間違った指示を出せば、間違ったようにやってくれる。

Range(Cells(i,3),Cells(i+1,3)) とか、
Cells(i,3).Resize(2) とかではないですか?

追加事項もあるようですが、
まず、ご自分でやりたいことをきちんと日本語で説明して下さい。

他人に説明する過程で、自分の間違いに気づくことができます。
そこを端折るから、普通なら気づくことに気づかないことがあります。
・ツリー全体表示

【79310】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/7(金) 22:08 -

引用なし
パスワード
   参考HPです。

ht tp://www.niji.or.jp/home/toru/notes/8.html
・ツリー全体表示

【79309】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/7(金) 22:02 -

引用なし
パスワード
   >>>For i = 1 To Cells(1, 1).End(xlDown) ←これ列方向であってますよね?

行方向ですが・・・。
・ツリー全体表示

【79307】Re:イベント管理:複数ファイルのイベント...
発言  マナ  - 17/7/7(金) 20:44 -

引用なし
パスワード
   ▼VBA 初心者 さん:


この手の転記・集計ものは、苦手というか興味がないのですが
回答がつかないようなので。

1シートの場合は、こんな感じでできます。
これを参考に、修正していけば、お望みのものになると思います。

ですが、まずは、以下のコードを理解できるくらいまでは
基本的なことを勉強してからかもしれません。

Option Explicit

Sub test()
  Dim ws As Worksheet
  Dim v
  Dim j As Long, k As Long
  Dim m As Long, n As Long
  Dim w(1000, 12)
  
  Set ws = ActiveSheet
  
  v = ws.Range("A1").CurrentRegion.Value
 
  For k = 2 To UBound(v, 2)
    w(n, 0) = v(1, k)
    For j = 2 To UBound(v, 1)
      If v(j, k) = "" Then Exit For
      m = Month(v(j, k))
      If m > 3 Then
        m = m - 3
      Else
        m = m + 9
      End If
      w(n, m) = "○"
    Next
    n = n + 1
  Next
      
  With Worksheets.Add
    With .Range("B1")
      .Value = "4月"
      .AutoFill .Resize(, 12)
    End With
    .Range("A2").Resize(n, 13).Value = w
  End With

End Sub
・ツリー全体表示

【79306】Re:オブジェクトエラーの理由
回答  oshiete  - 17/7/7(金) 11:52 -

引用なし
パスワード
   ▼カリーニン さん:
>コード内容の説明がないですが、マクロを使うまでもなく条件付き書式
>でいける案件のような気もします。

このあと下にスペース入れたいと思ってます。
・ツリー全体表示

【79305】Re:オブジェクトエラーの理由
回答  oshiete  - 17/7/7(金) 10:27 -

引用なし
パスワード
   ▼カリーニン さん:


>>For i = 1 To Cells(1, 1).End(xlDown) ←これ列方向であってますよね?
>ループの変数iは行方向のようですが、

>
>>If Cells(2, i).Value = Cells(2, i + 1).Value Then
>
>こちらは変数iは列番号として使われてますが、これはいいのですか?
・ツリー全体表示

【79304】Re:オブジェクトエラーの理由
回答  oshiete  - 17/7/7(金) 10:26 -

引用なし
パスワード
   ▼カリーニン さん:

ありがとうございます。
変更してみたのですが、できませんでした


>質問は省略しないできちんと書きましょうね。
>
>↓じゃないですか?
>
>>Cells(3, i)(3, i + 1).Interior.ColorIndex = 3
>
>Cells(Cells(3, i),Cells(3, i + 1)).Interior.ColorIndex = 3
>
>もっとも、これもシートをきちんと指定した方がいいですね。
>
>たとえば、アクティブシートの場合
>
>ActiveSheet.Cells(ActiveSheet.Cells(3, i),ActiveSheet.Cells(3, i + 1)).Interior.ColorIndex = 3
・ツリー全体表示

【79303】イベント管理:複数ファイルのイベント名...
質問  VBA 初心者  - 17/7/6(木) 22:04 -

引用なし
パスワード
   初めて投稿させていただきます。
VBA での入門書を読んだのですが、以下のやりたいことを可能とするプログラムのイメージが持てませんでした(VBAでプログラムするのは無理なのかもしれません。)
出来ないと判断する前に、ネットでプロの皆さんにご意見いただければと思います。よろしくお願いします。
【やりたいこと】
同じフォルダ内の複数の Excelファイルに入力されている各プロジェクトのイベント状況(イメージ:下記、ファイル1やファイル2)を、新規のExcelファイルにフォーマットを変えて一覧(イメージ:下記、管理ファイル)で出力したい。

(ファイル1.xlsx)
     プロジェクトA,  プロジェクトB,  プロジェクトC
イベント1:XX年XX月XX日  XX年XX月XX日  XX年XX月XX日 
イベント2:XX年XX月XX日  XX年XX月XX日  XX年XX月XX日
イベント3: XX年XX月XX日  XX年XX月XX日  XX年XX月XX日

(ファイル2.xlsx)
     プロジェクトD,  プロジェクトE,  プロジェクトF
イベント1:XX年XX月XX日  XX年XX月XX日  XX年XX月XX日 
イベント2:XX年XX月XX日  XX年XX月XX日  XX年XX月XX日
イベント3: XX年XX月XX日  XX年XX月XX日  XX年XX月XX日


1つのファイルにまとめて、以下の型式(月単位)でイベント状況を把握したい。
(管理ファイル.xlsx)
     XX年
          4月   5月    6月    7月      8月   9月  
プロジェクトA:      イベント1           イベント2 イベント3  
プロジェクトB:               イベント1    
プロジェクトC:           イベント1             イベント2
プロジェクトD: イベント1
プロジェクトE:                イベント1 
プロジェクトF:      イベント1                 イベント2
・ツリー全体表示

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