Excel VBA質問箱 IV

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

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


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

【75724】Re:VBAによる時刻の比較
回答  γ  - 14/6/20(金) 7:36 -

引用なし
パスワード
   Worksheets("main").Cells(7, 3) には、
どのような形式の時刻が入っていますか?
文字列ならTimevalueが必要ですが、
23:10:00などと入力したのであれば、
Timevalueは不要です。
・ツリー全体表示

【75723】Re:ダウンロードフォルダの指定の仕方
発言  マルチネス  - 14/6/20(金) 0:17 -

引用なし
パスワード
   MOUGでは、マルチポストは規約上は禁止されてませんが、最近
までは規約にマルチポスト禁止が明言されており、規約から
削除された後も回答者はマルチポスト反対が多いです。

なお、こちらのサイトではマルチポストは禁止されてませんが、
↓のように規定されています。

>マルチポストについて
>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわない>ということです。

>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、と>いうのはモラルに反します。「解決したからいいや」というのではありません。

>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。
・ツリー全体表示

【75722】VBAによる時刻の比較
質問  nh  - 14/6/19(木) 23:16 -

引用なし
パスワード
   Worksheets("main")のセル C7に最終作業時間が記載されています。
これが23時以降ならxxxという比較をしたいのですが、

 If TimeValue(Worksheets("main").Cells(7, 3)) > #11:00:00 PM# Then
  MsgBox "セルの記載時間は23時以降"
 End If
とすると、型が一致しません というエラーになります。
(#23:00:00#とするとvbaの方で #11:00:00 PM# と変換したみたいですが)

時刻の比較の方法を教えて下さい。お願いします
・ツリー全体表示

【75721】ダウンロードフォルダの指定の仕方
質問  hofehofe E-MAIL  - 14/6/19(木) 22:51 -

引用なし
パスワード
   こんばんは,よろしくお願いします。
フォームにwebbrowserを貼り付けて,あるサイトからcsvファイルをダウンロードしています。webサイト上のダウンロードボタンをクリックして,その後立ち上がってくるポップアップなどは,sendkeyを使ってダウンロードフォルダにダウンロードすることができています。
しかし,ファイルによって,保存するフォルダを指定したりなど,ダウンロードして保存するフォルダを指定することができずに困っています。つまり,webBrowserのフォルダ指定がうまくいきません。タブキーなどをsendkeyして,いろいろとやってみたのですが,前回のダウンロードフォルダのが記憶されていて,いつも同じフォルダにダウンロードすることができません。フォルダを文字列で指定するなどのことができればいいのですが,そのような方法はあるのでしょうか?
イクセルは,2013です。OSは8.1です。IEは11.0.9です。
よろしくお願い致します。
・ツリー全体表示

【75720】Re:非表示の列を無視する方法
回答  あい  - 14/6/19(木) 16:34 -

引用なし
パスワード
   列の幅を条件にしてsumifs関数で、
欲しい結果になりました。
・ツリー全体表示

【75719】非表示の列を無視する方法
質問  あい  - 14/6/19(木) 14:59 -

引用なし
パスワード
   いつも助けられております。
Excel2013を利用しています。

早速ご質問させて頂きます。

非表示の行を無視する設定はあるのですが、
非表示の列を無視したいのです。
=AGGREGATE(9,7,G9,J9,M9,P9,S9,V9,Y9,AB9,AE9,AH9,AK9,AN9)
↑上だと欲しい結果にはなりません。
※列は1月から12月までになり、現在なら7月(Y9)以降は非表示です。

非表示の列を無視する関数を自作してモジュールをブックにインポート
していくとどうしても処理が遅くなります。
ナニカいい方法はないでしょうか。

調べが足りないだけで列を無視できる関数とかあるのでしょうか。
・ツリー全体表示

【75718】Re:シートの値を参照して色をつけたい
お礼  dai  - 14/6/18(水) 17:01 -

引用なし
パスワード
   ▼kanabun さん:
早々の対応ありがとうございます。
うまくいきました。本当に感謝です。
・ツリー全体表示

【75717】Re:シートの値を参照して色をつけたい
発言  kanabun  - 14/6/18(水) 17:00 -

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

>MaxはAL列まででした。
>A列の氏名は固定です。
>B列からすべて列をチェックしたいです。

列数が変動する場合です

Sub Lookup3()
  Dim dic As Object
  Dim i As Long, j As Long, jz As Long
  Dim ok As Boolean
  Dim v
  
  '---- Sheet1 A列を辞書にキー登録
  With Worksheets(1)
    v = .Range("A2", .Cells(1).End(xlDown)).Value
  End With
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(v)
    dic(v(i, 1)) = Empty
  Next
  
  '---- Sheet2のB列またはD列が 辞書にあれば セルを色塗り
  With Worksheets(2)
    .UsedRange.Interior.ColorIndex = xlNone
    v = .Cells(1).CurrentRegion.Value
    jz = UBound(v, 2)   '最終列番号
    For i = 2 To UBound(v) '2行目から
      ok = False
      For j = 2 To jz 'B列からチェックはじめ
       If dic.Exists(v(i, j)) Then
        If Not ok Then
          .Cells(i, 1).Interior.Color = vbRed 'A列
          ok = True
        End If
        .Cells(i, j).Interior.Color = vbRed
       End If
      Next
    Next
  End With
End Sub
・ツリー全体表示

【75716】Re:シートの値を参照して色をつけたい
発言  dai  - 14/6/18(水) 16:54 -

引用なし
パスワード
   ▼kanabun さん:
度々すいません。
すべてのデータをチェックしたところ
MaxはAL列まででした。
A列の氏名は固定です。
B列からすべて列をチェックしたいです。
よろしくお願いします。
・ツリー全体表示

【75715】Re:シートの値を参照して色をつけたい
発言  dai  - 14/6/18(水) 16:43 -

引用なし
パスワード
   ▼kanabun さん:
返信ありがとうございます。
(2)です。
>(2) D列にも、M列にも、Z列にも一致データがあることがあるので、
>  どんなばあいも、すべての列をチェックしなければならない。
毎月のデータをじっくり見たところ
列が不変でA列〜Z列の時もあればA列〜AL列の時もありました。
どこの列に値が入ってくるのかわからいのです。
よろしくお願いします。
・ツリー全体表示

【75714】Re:シートの値を参照して色をつけたい
発言  kanabun  - 14/6/18(水) 16:36 -

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

>もう一つよいでしょうか。
>Sheet2のB列またはD列が 辞書にあれば セルを色塗り
>をB列からすべての列を対象にできるのしょうか。
>たとえばB列〜Z列です。

それは、現状 B列とD列だけ辞書チェックしているのを、
B列〜Z列 の列Loopに拡張すればいいだけですけど、
セル塗りつぶしの仕様としては

(1) B列から辞書チェックしていって、たとえば D列にあったら、A列とD列を
  塗りつぶして、後の列のチェックは省略できる

(2) D列にも、M列にも、Z列にも一致データがあることがあるので、
  どんなばあいも、すべての列をチェックしなければならない。

(1),(2) どちらでしょう?
・ツリー全体表示

【75713】Re:シートの値を参照して色をつけたい
お礼  dai  - 14/6/18(水) 16:02 -

引用なし
パスワード
   ▼kanabun さん:
対応ありがとうございます。大変助かりました。
もう一つよいでしょうか。
Sheet2のB列またはD列が 辞書にあれば セルを色塗り
をB列からすべての列を対象にできるのしょうか。
たとえばB列〜Z列です。
よろしくお願いします。
・ツリー全体表示

【75712】Re:シートの値を参照して色をつけたい
発言  kanabun  - 14/6/18(水) 10:41 -

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

>マクロをかけるとシート1のA列を参照して同じだったら
>下記のようにしたいです。
>A列          B列   C列     D列
>Aさん(赤色)   あ(赤色)  11      さ
>Bさん       た       12       は
>Cさん(赤色)   ま      13       か(赤色)

ぼくがやるとすれば、
○○の一つ覚えですがSheet1A列をDictionaryに登録しておき、
Sheet2からはそれを「辞書引き」して何度もLOOKUPしなくて
すむようにします。

'-------------------------------------------- 標準モジュールに
Sub Lookup1()
  Dim dic As Object
  Dim i As Long
  Dim v
  
  '---- Sheet1 A列を辞書にキー登録
  With Worksheets(1)
    v = .Range("A2", .Cells(1).End(xlDown)).Value
  End With
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(v)
    dic(v(i, 1)) = Empty
  Next
  
  '---- Sheet2のB列またはD列が 辞書にあれば セルを色塗り
  With Worksheets(2)
    .UsedRange.Interior.ColorIndex = xlNone
    v = .Cells(1).CurrentRegion.Columns(2).Resize(, 3).Value
    For i = 1 To UBound(v)
      If dic.Exists(v(i, 1)) Then
        .Cells(i, 1).Interior.Color = vbRed
        .Cells(i, 2).Interior.Color = vbRed
      ElseIf dic.Exists(v(i, 3)) Then
        .Cells(i, 1).Interior.Color = vbRed
        .Cells(i, 4).Interior.Color = vbRed
      End If
    Next
  End With
End Sub
・ツリー全体表示

【75711】Re:本当にありがとうございました。
発言  kanabun  - 14/6/18(水) 9:44 -

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

> kanabunさん、フォローありがとうございました。

γさん、でしゃばりまして、すみません m(_ _)m

>ちなみに、最小限の修正で済まそうとすれば、
>Target(1).Addressのようにして、
>一つ目のセルだけで判定する方法もありますね。

そうか、そのほうが簡単でしたね(^^

> 14/6/18(水) 8:39
# きょうはお仕事先は 創立記念日でお休みでしょうか(^^
・ツリー全体表示

【75710】Re:本当にありがとうございました。
発言  γ  - 14/6/18(水) 8:39 -

引用なし
パスワード
   解決したようで、なによりです。
kanabunさん、フォローありがとうございました。

結合セルだろうとは思っていましたが、
デバッグ手法を知ってもらいたいと思い、長引きました。
デバッグはデバッグで、コーディングを同じくらい大切ですね。

ちなみに、最小限の修正で済まそうとすれば、
Target(1).Addressのようにして、
一つ目のセルだけで判定する方法もありますね。
それでは。
・ツリー全体表示

【75709】シートの値を参照して色をつけたい
質問  dai  - 14/6/18(水) 1:28 -

引用なし
パスワード
   記憶マクロしかできませんどなたか助けてください。
シートの値を参照して別シートのセルに色をつけたいのです。

参照値はシート1にあります。
A列










100行ぐらいあります。

色つけはシート2です。
A列   B列 C列 D列
Aさん  あ  11  さ
Bさん  た  12  は
Cさん  ま  13  か
.
.
.
.
2000行ぐらいあります。

マクロをかけるとシート1のA列を参照して同じだったら
下記のようにしたいです。
A列          B列   C列     D列
Aさん(赤色)   あ(赤色)  11      さ
Bさん       た       12       は
Cさん(赤色)   ま      13       か(赤色)
.
.
.
.
よろしくお願いします。
・ツリー全体表示

【75708】本当にありがとうございました。
お礼  hamako  - 14/6/17(火) 15:00 -

引用なし
パスワード
   γ様・kanabun様

お二人に教えて頂いた事を試し、
私の作成したい形のものができました。

本当にお手数をおかけしました。
まだまだたくさん調べ中のマクロがあるのですが
こちらで質問しなくてもできるように
一つ一つ勉強していきたいと思います!

γ様には問いかけを頂き、
私からきちんとした回答がないまま
「できました」となってしまい、申し訳ございません。

本当にありがとうございました。
・ツリー全体表示

【75707】Re:補足
発言  kanabun  - 14/6/17(火) 12:43 -

引用なし
パスワード
   ↑すみません。シートの修飾を忘れてました


  ElseIf Sh Is Sheets(shName2) Then
    Set toCell = Intersect(Sh.Range("D12"), Target)
    If Not toCell Is Nothing Then
      MsgBox "D12のときの処理"
       Sheets(shName3).Activate
    Else
      Set toCell = Intersect(Sh.Range("C20:C24"), Target)
      If Not toCell Is Nothing Then
        MsgBox "C20:C24 のいずれかのときの処理"
         Sheets(shName4).Activate
      End If
    End If
  End If
・ツリー全体表示

【75706】Re:補足
発言  kanabun  - 14/6/17(火) 12:12 -

引用なし
パスワード
   ▼hamako さん:
よこからすみません。

>挿入してみたのですが、変化ありません・・

>$C$20:$H$20
>$C$21:$H$21
>$C$22:$H$22
>$C$23:$H$23
>$C$24:$H$24
>
>↑回答の仕方、あってますでしょうか
>C20,C21,C22,C23、C24をダブルクリックした後、
>Alt+F11画面の 表示→イミディエイトウインドウに表示されたものです。
イミディエイト・ウィンドウにアドレスが表示されたのですから、
それが「変化」なのです。

>関係ないかもですが、
>「D12」は D列からG列を結合・行は12〜15行目を結合して「D12」です
>「C20」は D列からH列を結合・行は20行目のみ結合なしで「C20」です
>(C21〜同じ)

大いに関係あります。
たぶん、γさんの
>>># 思い当たる節が無いわけではないが、
というのも、このことだったのでしょう。

セルを結合していたら、C20単独セルだけのダブルクリックはできない
("C20"というセルアドレスは永久に返ってこない)ということを
あなたのほうから気付いてデバッグしてほしかったのでしょう。

要らぬお節介かもですが...
つぎは Intersect というのを調べてみてください。

  ElseIf Sh Is Sheets(shName2) Then
    Set toCell = Intersect(Range("D12"), Target)
    If Not toCell Is Nothing Then
      MsgBox "D12のときの処理"
       Sheets(shName3).Activate
    Else
      Set toCell = Intersect(Range("C20:C24"), Target)
      If Not toCell Is Nothing Then
        MsgBox "C20:C24 のいずれかのときの処理"
         Sheets(shName4).Activate
      End If
    End If
  End If
・ツリー全体表示

【75705】Re:補足
発言  hamako  - 14/6/17(火) 9:32 -

引用なし
パスワード
   お手数をおかけして申し訳ございません。
返信ありがとうございます。

>Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
>の直ぐ次の行に
>  Debug.Print Target.Address
>を挿入してみてください。


挿入してみたのですが、変化ありません・・


>> 売上伝票のC20、C21、C22、C23、C24の5つをダブルクリックすると
>を実行したときに、イミディエイトウインドウに表示される結果を教えて下さい。

$C$20:$H$20
$C$21:$H$21
$C$22:$H$22
$C$23:$H$23
$C$24:$H$24

↑回答の仕方、あってますでしょうか
C20,C21,C22,C23、C24をダブルクリックした後、
Alt+F11画面の 表示→イミディエイトウインドウに表示されたものです。

>
># 思い当たる節が無いわけではないが、ここは一つ正攻法で行きましょう。
># 問題解決の手法自体も勉強する価値があるものだからです。

関係ないかもですが、
「D12」は D列からG列を結合・行は12〜15行目を結合して「D12」です
「C20」は D列からH列を結合・行は20行目のみ結合なしで「C20」です
(C21〜同じ)

私の知識不足の為、ご迷惑をおかけし、申し訳ございません。
よろしくおねがいいたします。
・ツリー全体表示

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