Excel VBA質問箱 IV

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

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


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

【76286】Re:Excel VBA ODBを使った時のinsertにつ...
お礼  ゆうぞう  - 14/10/28(火) 0:56 -

引用なし
パスワード
   calen さん:
ご回答ありがとうございます。
現在はデータが少なく試験的に運用しようと思っているので、自ブックのデータを使用していますが、将来的にはDBを分離したいと考えています。
その時に、出来る限り修正せずにそのまま利用できればと思い、SQLを使っていました。
飛ばされる行をすべて行削除しても、Emptyとなっていませんでした。
なぜこのようになるのかはわかりませんが、とりあえずはExcelでソートして対処し、データが大きくなったらDBを別にしようと思います。
ありがとうございました。
・ツリー全体表示

【76285】複数回連続して検索したいが上手くゆきま...
質問  ペンネーム船長  - 14/10/27(月) 22:49 -

引用なし
パスワード
   【質問】
連続して検索を行おうとすると、2回目の検索が無視されてしまします。
どのような記述をすれば良いか教えて下さい。

【詳細説明】
複数のシートがあります。
1回目に商品1があるかどうか始めのシートからチェックしてゆきます。
商品1があった場合、その行のG列に1があるか否かを調べます。
もし、1があったとき次に商品2があるかどうか始めのシートから調査したいのですが、
2回目の検索は無視されてしまいます。
どのような記述をすれば良いか教えて下さい。

Private Sub CommandButton1_Click()
On Error Resume Next 'エラーを無視して進む
Dim sh As Worksheet
Dim obj As Range
Dim obj2 As Range
Dim w As String

For Each sh In Worksheets
     
  Set obj = sh.Cells.Find(what:="商品1") '1回目の検索

  w = obj.Offset(0, 7).Value 'G列
       
  If w = "1" Then
  Set obj = Nothing '変数をクリアさせる⇒効果なし
  Set obj = sh.Cells.Find(what:="商品2") '続けて2回目の検索⇒NG
  End If
  w = ""

  Next sh

End Sub
・ツリー全体表示

【76284】Re:複数のブックの中の特定セルを別ブッ...
お礼  Banyan  - 14/10/27(月) 17:09 -

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

これが「顧客ブック」なのですか?
4人の例を出したのですか?
どの人も、同じシート名の、同じ位置に取得すべき情報があるのですね?

→そうです、全て同じ位置で、違うのは月と名前くらいです。


それらのブックを一つずつ、
・読み込み、
・特定シートの、特定場所をコピーして
・「集計ブック」に貼り付ける
という作業をマクロにすることから考えてはどうですか?

→シンプルな方法として、おっしゃる通りだと思います。


それを自動的にしようとすれば、
「顧客ブック」のファイル名はどういうルールでネーミングされているのか、
月は入っているのかとか、そうした情報も必要になるでしょう。

→理想は自動的に入力されていくことですので、もっと調べたいと思います。


申し上げておきますが、「コードを作ってください」というリクエストには
私はお応えできません。あしからず。
不明点、詰まっている点に助言は少しくらいできるかもしれませんが。

→VBAに関しては全くの初心者でしたので、シュミレーションができず相談させていただきました。もちろんこの場で数式などのご指南はできないと承知しております。丁寧に答えていただきありがとうございました。
・ツリー全体表示

【76283】たぶんこれで解決できるのでは?
回答  γ  - 14/10/25(土) 23:08 -

引用なし
パスワード
   ワークシートに=Now()などがあると、
そうした現象になるようです。

開く前に警告表示を抑止すると回避できます。
 Application.DisplayAlerts = False
 Workbooks.Open ThisWorkbook.FullName
 Application.DisplayAlerts = True
・ツリー全体表示

【76282】Re:遅くなりました!m(__)m再質問(確認...
発言  hamako  - 14/10/24(金) 12:54 -

引用なし
パスワード
   返信ありがとうございます。
皆様、ありがとうございます。

サーバーに置いていたので
ローカルに移動して実行してみましたが、
同じでした。(「・・・は既に開いてます・・・開きますか?」と出る)

ちなみに今、標準モジュールのModure1に
登録してあるのは76255で教えて頂いた下記の通りです
(そのままコピペです)

Sub test()
  Application.OnTime Now, "my_Procedure"
  ThisWorkbook.Close False
End Sub

Sub my_Procedure()
  Workbooks.Open ThisWorkbook.FullName
End Sub

一番初めに76208で教えて頂いたのだと、
保存先を変えた時や、各各の保存先によって
コードを変えないといけなく、
上記なら変えなくてよいのでこちらにしました
(・・・この考えあってますか?)

そしてボタンにtestというマクロを登録してます。
・ツリー全体表示

【76281】Re:usedrange
お礼  ふめい  - 14/10/24(金) 10:57 -

引用なし
パスワード
   わかりました。
丁寧な回答
ありがとうございます。


▼kanabun さん:
>▼ふめい さん:
>>With ABC 
>> lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
>>End With
>>
>>と
>>
>>With ABC.UsedRange
>> lastrow=.Rows(.Rows.Count).Row
>>End With
>>
>>
>>は同じですよね?
>
>(1)
>  Set ABC = ActiveSheet
>  With ABC
>    lastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
>  End With
>
>と
>(2)
>  Set ABC = ActiveSheet
>  With ABC.UsedRange
>    lastRow = .Rows(.Rows.Count).Row
>  End With
>
>と
>(3)
>  Set ABC = ActiveSheet
>  With ABC.UsedRange.Rows
>    lastRow = .Item(.Count).Row
>  End With
>
>は同じです。
>
>(2) できれば (3) を推奨。
・ツリー全体表示

【76280】Re:遅くなりました!m(__)m再質問(確認...
発言  独覚  - 14/10/24(金) 9:27 -

引用なし
パスワード
   ▼hamako さん:
とりあえず原因追及の身になりますが、そのファイルはどこにありますか?

もし、ファイルサーバ等においてあるのであればそれをローカル(手元のPC)に
おいた場合でも同じ状況になるでしょうか?
・ツリー全体表示

【76279】Re:遅くなりました!m(__)m再質問(確認...
発言  γ  - 14/10/23(木) 21:38 -

引用なし
パスワード
   ▼hamako さん:
>上記の通りそのままコピペで
>ボタンに登録した場合は、
>
>実行すると閉じるのみです
>(特になにもメッセージもでず、閉じるのみです)

ああ、そうでしたか。
ブックがなんらかの事情で閉じないので二重に開く警告が
出たのかと思いましたが、そうではなかったようです。

こちらでは希望通りの行動がみられ、
あなたのおっしゃる事象は再現しないので、お手上げです。
力及ばす失礼しました。
・ツリー全体表示

【76278】Re:複数のブックの中の特定セルを別ブッ...
発言  γ  - 14/10/23(木) 21:34 -

引用なし
パスワード
   > [専用システム] ※毎月新しく月報ファイルをPC上に出力しています。
> ↓ ↓ ↓ ↓
> ■(xlsx.FILE) ■(xlsx.FILE) ■(xlsx.FILE) ■(xlsx.FILE)   
> ↓       ↓       ↓      ↓ 指定されたセルを抽出   2014      2014     2014     2014
> 9        9      9       9
> 田中      安井     安藤      和田
> AA       BB      CC       DD  
> \980       \880     \950      \960
> \24,500    \14,080    \22,800    \22,080   
> 50       62      47       56

これが「顧客ブック」なのですか?
4人の例を出したのですか?
どの人も、同じシート名の、同じ位置に取得すべき情報があるのですね?

それらのブックを一つずつ、
・読み込み、
・特定シートの、特定場所をコピーして
・「集計ブック」に貼り付ける
という作業をマクロにすることから考えてはどうですか?

それを自動的にしようとすれば、
「顧客ブック」のファイル名はどういうルールでネーミングされているのか、
月は入っているのかとか、そうした情報も必要になるでしょう。

申し上げておきますが、「コードを作ってください」というリクエストには
私はお応えできません。あしからず。
不明点、詰まっている点に助言は少しくらいできるかもしれませんが。
・ツリー全体表示

【76277】Re:usedrange
発言  kanabun  - 14/10/23(木) 18:44 -

引用なし
パスワード
   ▼ふめい さん:
>With ABC 
> lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
>End With
>
>と
>
>With ABC.UsedRange
> lastrow=.Rows(.Rows.Count).Row
>End With
>
>
>は同じですよね?

(1)
  Set ABC = ActiveSheet
  With ABC
    lastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
  End With


(2)
  Set ABC = ActiveSheet
  With ABC.UsedRange
    lastRow = .Rows(.Rows.Count).Row
  End With


(3)
  Set ABC = ActiveSheet
  With ABC.UsedRange.Rows
    lastRow = .Item(.Count).Row
  End With

は同じです。

(2) できれば (3) を推奨。
・ツリー全体表示

【76276】Re:遅くなりました!m(__)m再質問(確認...
発言  hamako  - 14/10/23(木) 18:08 -

引用なし
パスワード
   >ところで、
>Sub test()
>  ThisWorkbook.Close False
>End Sub
>だけを実行したらどうなるのでしょうかねえ。


my_Procedure()
をコードにいれないという事でしょうか?m(__)m

上記の通りそのままコピペで
ボタンに登録した場合は、

実行すると閉じるのみです
(特になにもメッセージもでず、閉じるのみです)

意味を取り違えていたらすみませんm(__)m
・ツリー全体表示

【76275】usedrange
質問  ふめい  - 14/10/23(木) 17:41 -

引用なし
パスワード
   With ABC 
lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
End With



With ABC.UsedRange
 lastrow=.Rows(.Rows.Count).Row
End With


は同じですよね?
・ツリー全体表示

【76274】複数のブックの中の特定セルを別ブックに...
質問  Banyan  - 14/10/23(木) 14:48 -

引用なし
パスワード
   ▼γ さん:
度々説明不足で申し訳ありません。

文だけでは伝わりにくいと思い、
例としてフォーマットといいますか、作ってスクリーンショットをしたので、お見せしたかったのですが、貼れない、、と思って諦めてました。


[専用システム] ※毎月新しく月報ファイルをPC上に出力しています。
↓ ↓ ↓ ↓
■(xlsx.FILE) ■(xlsx.FILE) ■(xlsx.FILE) ■(xlsx.FILE)   
↓       ↓       ↓      ↓ 指定されたセルを抽出   2014      2014     2014     2014
9        9      9       9
田中      安井     安藤      和田
AA       BB      CC       DD  
\980       \880     \950      \960
\24,500    \14,080    \22,800    \22,080   
50       62      47       56
↓       ↓      ↓       ↓    
ォ[集計用ブック] に配置
(年ごと、月ごと、プランごと、特定顧客比較、新規比較、などいろんな比較ができるように数値等のフィルターを各々かけたいと思っています)

  年  月  顧客名 プラン 単価 売上  新規 
 2014    9   田中  AA   \980    \24,500 50
 2014    9   安井  BB   \880    \14,080 62
 2014    9   安藤  CC   \950    \22,800 47
 2014    9   和田  DD   \960    \22,080 56

集計用ブックは特別複雑なものではなく、シンプルで代表的なシートで作成したいと考えております。
ただ、プランだけは、円グラフでどれが多いのか、別のワークシートで比較できるようにしたいです。

顧客ブックの内容はとても細かくグラフもあり複雑です。
ざっくりいうと金額の内訳、顧客に来られるお客様の層や人数把握などです。
ただし、集計に必要なセルがある部分は、上記のようなフィルターもなくシンプルな表になっています。

長くだらだらとなってしまいますので、まずここで締めさせていただきます。

まず、この時点までで、お手数ですが、質問の内容がわからない部分を教えていただけますでしょうか。
本来ならブラッシュアップして質問するべきなのですが、、、。


  
・ツリー全体表示

【76273】Re:データを一列に並べるマクロ
お礼  akiko☆  - 14/10/23(木) 9:47 -

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

ご返信ありがとうございました!

▼γ さん:
>それだけのコードが書けるのですから、少しトライされたらわかりそうに
>思いますが、不明点はどこでしょうか?

いえ;実はネット上にあったのを参考にさせて
いただいただけなので、ほぼ素人なのです。。
それなのにこちらに書き込みをしてしまったこと自体、
たいへん申し訳ありませんでした。。

そして件数に関わりなく、エラーが出てしまった
理由が分かりました。データに、「=」が含まれており、
その結果が「#NAME?」(書名の一部なのですが)に
なっていたが原因でした。。。

>> その配列に書き込んでいきます。
>> そして、いくつ書き込んだかもカウントしておきます。
>ここは誤解を招くかも。
>カウントしておくというか、書き込む時に、位置が必要ですから、
>覚えて置くもなにもないですね。
> p = p + 1
> a(p,1) = Cells(lngRow, lngCol).Value
>ですね。
>
>そして、最後に
>rngOutPut.Resize(p, 1) = a
>ですね。

ご丁寧にご説明くださって本当にありがとうございます。
もっとちゃんと勉強してから門をたたくべきでした。。

またお世話になることもあるかと存じます、
どうぞよろしくお願いいたします。
・ツリー全体表示

【76272】Re:複数のブックの中の特定セルを別ブッ...
発言  γ  - 14/10/22(水) 21:36 -

引用なし
パスワード
   ▼Banyan さん:
>そうではなく、
>顧客別に特定の数値について、月ごと、年ごと、プラン等にはフィルターをかけて>顧客の数値を比較できるワークシートであってほしいのです。

こんちは。
あなたの願望を書かれるのはご自由ですが、
まずは、顧客別のブックの内容を説明しないと、
誰にも伝わりません。

どういうシート内容なのか、現実通りでなくてかまわないので、
説明してはどうですか?
    A   B   C 
1
2
3
のような形で示して下さい。

そして、全顧客の集約したシートはどのようなフォーマットのものですか?
上記と同じ形式で説明してみては。
そのフォーマットも含めて考えて頂戴、というのは甘え過ぎです。

言葉はきついですが、今の状態だと、
寝言というか、他人から、その人が見た夢の説明をしてもらっている感じですね。
(いや、失礼。だって、ほんとにそうなんだから仕方がない。)
・ツリー全体表示

【76271】Re:データを一列に並べるマクロ
発言  γ  - 14/10/22(水) 21:24 -

引用なし
パスワード
   それだけのコードが書けるのですから、少しトライされたらわかりそうに
思いますが、不明点はどこでしょうか?

> その配列に書き込んでいきます。
> そして、いくつ書き込んだかもカウントしておきます。
ここは誤解を招くかも。
カウントしておくというか、書き込む時に、位置が必要ですから、
覚えて置くもなにもないですね。
 p = p + 1
 a(p,1) = Cells(lngRow, lngCol).Value
ですね。

そして、最後に
rngOutPut.Resize(p, 1) = a
ですね。
・ツリー全体表示

【76270】Re:選択範囲をPDFで保存
発言  γ  - 14/10/22(水) 21:19 -

引用なし
パスワード
   ▼独覚 さん:
>▼γ さん:
>Excel2010なので
>・A1:AJ60を選択
>・ファイルタブから「名前を付けて保存」を選択
>・「ファイルの種類」に「PDF(*.pdf)」を選択
>・「オプション」で「発行対象」に「選択した部分」を選択
>・ほかに設定するオプションはあればそれを選択して「保存」
>
>上記をマクロ記録、じゃないかな?

ああ、どうも。ご発言、見逃してました。
そういう方法もあるんですねえ。気がつきませんでした。
私の方法でも一応できることは確認して投稿はしておりますが、
独覚さんの方法のほうが良いでしょうね。
質問者さんの反応が待たれます。
・ツリー全体表示

【76269】Re:遅くなりました!m(__)m再質問(確認...
発言  γ  - 14/10/22(水) 21:16 -

引用なし
パスワード
   ▼hamako さん:
>イベントプロシージャにはコードが入っています。
>エクセルファイルにはシートを4つあるのですが、
>Sheet2のWorkSheet-BeforeDoubleClickのところ?と
>This workBookのGeneralところ?にそれぞれ。。
>これが原因ですか???
単に、コードがある、というだけでは
それが原因かどうかは判定できません。
コードの内容によりますね。

ところで、
Sub test()
  ThisWorkbook.Close False
End Sub
だけを実行したらどうなるのでしょうかねえ。
・ツリー全体表示

【76268】Re:タスクに残る
発言  カリーニン  - 14/10/22(水) 20:58 -

引用なし
パスワード
   本件とは直接は関係ないかもしれませんが。

Application.Quitの誤解
ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html
・ツリー全体表示

【76267】Re:Excel VBA ODBを使った時のinsertにつ...
発言  calen  - 14/10/22(水) 19:22 -

引用なし
パスワード
   自ブックにデータを追加するだけなのになぜSQLなのかとても理解に苦しみます。
まあ、それは趣味嗜好の問題なのかもしれないので置いときます。


かなり下に追加されたとき実際に最終セルがある認識している行との間が
すべて完全にEmptyなのかを調べてみてはいかがでしょうか?
長さ0の文字列とか入ってませんか?


なお
Thisworkbook.path & Thisworkbook.name
というのは
Thisworkbook.FullName
と書けます。

そしてこのようなDB接続をエクセルで行う場合は自ブックに接続することは
あまりよろしくないという説があります。
また、エクセルVBAでエクセルへのDB接続自体が不安定という説も。
(注、WordVBAやAccessVBA、またVB6などからのエクセルへのDB接続は問題ない。)
・ツリー全体表示

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