Excel VBA質問箱 IV

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

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


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

【78555】VBAでのガントチャート作成
質問  ROw  - 16/11/8(火) 16:27 -

引用なし
パスワード
   現在、エクセル2010のVBAでガントチャートみたいなものを作りたいのですが
行き詰り教えて頂けるとありがたいです

内容

ユーザーフォームに

納入便名、ステーション、着時間、発時間
4つのTextBoxと 入力完了 コマンドボタンがあります

納入便名(会社名) ステーション(横軸の番号)
着時間(7:20など) 発時間(7:40など)

これを手打ち入力して 入力完了ボタンを押すと

6      7     8      9     10     11      12

{1}     [エクセル便]
{2}
{3}
{4}

上記のような感じでセルが結合する感じにしたいのです

1時間のセルは 10分単位でセルで区切られています
・ツリー全体表示

【78554】Re:行と列が可変の行列計算
発言  sy  - 16/11/5(土) 23:21 -

引用なし
パスワード
   ▼マルチーズ さん:
>Q&Aサロンとマルチポスト。

あぁ、向こうでも同じ質問されてたんですね。

▼yuki さん:

なら禁止事項に引っかかるので、こちらで続けるなら向こうはその旨を伝えて解決済にして下さい。
もちろんこちらを閉じて、向こうで続けても構いませんけど。
どちらか一つに絞って下さい。
・ツリー全体表示

【78553】Re:行と列が可変の行列計算
発言  マルチーズ  - 16/11/5(土) 10:45 -

引用なし
パスワード
   Q&Aサロンとマルチポスト。

ここはマルチポストOKだけれどもそれは相手先もマルチポストOKの場合だけ。
Q&Aサロンはマルチポスト禁止。

さらにあちらで注意されているのにまったく無視。
こちらも無視の可能性が高いね。
・ツリー全体表示

【78552】Re:行と列が可変の行列計算
発言  sy  - 16/11/5(土) 10:25 -

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

一例です。
A列最終行の1つ下にA2〜最終行までを合計する記述です。

  Range("A" & Rows.Count).End(xlUp).Offset(1).FormulaR1C1 = "=SUM(R2C:R[-1]C)"
・ツリー全体表示

【78551】Re:行と列が可変の行列計算
発言  sy  - 16/11/4(金) 20:45 -

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

こんばんわ。
なんの計算をするんですか?

最終行にSUM関数で合計値を出すとかですか?

最終行を求めたいなら例えば、
Range("A" & Rows.Count).End(xlUp).Row
などで最終行を求められます。

最終列は、
Cells(1, Columns.Count).End(xlToLeft).Column
などで求められます。
・ツリー全体表示

【78550】行と列が可変の行列計算
質問  yuki  - 16/11/4(金) 10:12 -

引用なし
パスワード
   既に行と列が分かっている行列の計算はできるのですが、途中で行と列が増えた場合の行列計算はどのように組めよろしいでしょうか。ご教授頂けたら幸です。
・ツリー全体表示

【78549】Re:階層ごとにキーワード例えばifの色を...
回答  γ  - 16/11/3(木) 11:39 -

引用なし
パスワード
   ▼北海 さん:
>テキストエディターを使うのでなく、VBA上で設定できないのでしょうか?
できません。
インデントをつけることで十分に機能を果たしているはずです。
そういう機能を求めるなら、別のIDEを探してください。
・ツリー全体表示

【78548】Re:階層ごとにキーワード例えばifの色を...
発言  β  - 16/11/2(水) 23:47 -

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

たとえば、アップした Sample1 、インデント幅が 4 ですが、これを 6 にすると
以下になります。どうでしょう。
あまり、かわりないですかね?

Sub Sample1()
   If Range("A1").Value = 1 Then
   
      Range("F1").Interior.Color = vbRed
      
      If Range("A2").Value = 1 Then
         Range("F2").Interior.Color = vbRed
      ElseIf Range("A2").Value = 2 Then
         Range("F2").Interior.Color = vbYellow
      Else
         Range("F2").Interior.Color = vbBlack
      End If
      
   Else
   
   Range("F1").Interior.Color = vbBlue
   
      If Range("A2").Value = 1 Then
         Range("F2").Interior.Color = vbMagenta
      ElseIf Range("A2").Value = 2 Then
         Range("F2").Interior.Color = vbBlue
      Else
         Range("F2").Interior.Color = vbCyan
      End If
      
    End If

End Sub
・ツリー全体表示

【78547】Re:階層ごとにキーワード例えばifの色を...
発言  β  - 16/11/2(水) 23:44 -

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

VBE画面での階層ごとのキーワードの色がえはできないと思います。
視覚的にわかりやすくしたいということですね?

インデント幅を 5 とか 6 とか、大きく(深く)すれば、少しはましかも。
・ツリー全体表示

【78546】Re:階層ごとにキーワード例えばifの色を...
発言  β  - 16/11/2(水) 23:10 -

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

なるほど、なるほど。
VBE画面のことでしたか。

どうでしょうねぇ。
できないんじゃないかな。
・ツリー全体表示

【78545】Re:階層ごとにキーワード例えばifの色を...
発言  sy  - 16/11/2(水) 22:32 -

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

多分質問者さんや独覚さんの言われているのはVBE上でIFの色を一つづつ違う色にしたいと言う事だと思います。

IF 〜 THEN ←この一行が赤色
 IF 〜 THEN ←この一行が青色

そんな事出来るのかな?
・ツリー全体表示

【78544】Re:AutoFilterによる 配列を使ったあい...
発言  めがめが  - 16/11/2(水) 17:29 -

引用なし
パスワード
   tree=75645
に、フィルターオプションを使用した方法の回答がありました。
試しましたが、やはり、フィルターオプションでは、
さらに、絞り込みができません。

また別サイトに、
完全一致なら、xlFilterValues で、いくつでも配列指定ができますが、含まない や ワイルドカードには3つ以上対応していませんというような記述がありました。やはり、VBAの仕様上無理のようです。

絞り込んだデータを、別シートにコピー貼り付けして、それをさらに絞り込みなどして、必要なデータを抽出したいと思います。ありがとうございました。
・ツリー全体表示

【78543】Re:AutoFilterによる 配列を使ったあい...
発言  β  - 16/11/2(水) 17:08 -

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

>ですが、このAdvancedFilterは、CriteriaRangeによる指定しかできず、
>あいまい検索を配列格納しての抽出ができません。

はい。配列化したものに限らず、

オートフィルターは検索条件をコード上で規定する。
フィルターオプションは検索条件欄に記載してそれを指定する。

という仕様ですから。
配列内にある検索条件を検索欄に落とし込んで実行すればいいだけのことです。
・ツリー全体表示

【78542】Re:AutoFilterによる 配列を使ったあい...
発言  β  - 16/11/2(水) 17:05 -

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


>フィルターオプションというのは、
>VBAを使用しないで、
>エクセルにそなわっているフィルターオプションですか?
>それとも、AdvancedFilterの事ですか?
>

両方ともフィルターオプションです。
VBAで実行する場合は AdvancedFilterというメソッドになるだけです。

オートフィルターも、VBAで実行する場合は AutoFilterメソッドになりますよね。

フィルターオプションは、名前の通り Advanced です。
オートフィルターより、さらにきめの細かなAndやOrの抽出条件設定ができますし
必要列のみ抜出ということも、いとも簡単にできますし、
最初から別シートに抜き出すことも、いとも簡単にできます。
・ツリー全体表示

【78541】Re:AutoFilterによる 配列を使ったあい...
質問  めがめが  - 16/11/2(水) 16:53 -

引用なし
パスワード
   ▼マナ さん:
>▼めがめが さん:
>フィルターオプション(詳細設定)を使いましょう。
>使ったことがないなら、まずは手作業で可能かどうか確認してみるとよいです。
ご回答ありがとうございます。

フィルターオプションというのは、
VBAを使用しないで、
エクセルにそなわっているフィルターオプションですか?
それとも、AdvancedFilterの事ですか?

ですが、このAdvancedFilterは、CriteriaRangeによる指定しかできず、
あいまい検索を配列格納しての抽出ができません。
CriteriaRangeで指定する範囲の検索キーに、「*あ*」などと検索キーを入力して3つ以上検索はできます。が、それは、最初の質問でも書きましたが、
AutoFilter fieldのCriteriaRangeを使用した場合も同様にできます。

ただ、
AdvancedFilterにしろ、AutoFilterにしろ、CriteriaRangeを使用して検索をすると、
その抽出された結果を自分で確認し、

再度、他のマクロの別条件でさらに、絞り込みをかけると、一旦フィルターが解除されてしまい、絞り込みができません。

VBAの仕様上なのか、どういうわけか、AutoFilterのCriteria1による抽出の場合、抽出された結果を再度別条件でさらに絞り込みができます。

ですが、最初の質問でも書きましたが、AutoFilterのCriteria1の場合
あいまいなキー「*あ*」「*い*」と2つまでならできますが、
「*あ*」「*い*」「*う*」と3つになるとできません。
抽出結果が0件で、フィルターの矢印しかでなくなります。
・ツリー全体表示

【78540】Re:階層ごとにキーワード例えばifの色を...
発言  β  - 16/11/2(水) 16:13 -

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

なるほどです。

▼北海さん

独覚さんから回答がありますが、具体例でサンプルです。

Sub Sample1()
  If Range("A1").Value = 1 Then
  
    Range("F1").Interior.Color = vbRed
    
    If Range("A2").Value = 1 Then
      Range("F2").Interior.Color = vbRed
    ElseIf Range("A2").Value = 2 Then
      Range("F2").Interior.Color = vbYellow
    Else
      Range("F2").Interior.Color = vbBlack
    End If
    
  Else
  
    Range("F1").Interior.Color = vbBlue
    
    If Range("A2").Value = 1 Then
      Range("F2").Interior.Color = vbMagenta
    ElseIf Range("A2").Value = 2 Then
      Range("F2").Interior.Color = vbBlue
    Else
      Range("F2").Interior.Color = vbCyan
    End If
    
  End If
  
End Sub

Sub Sample2()

  Select Case Range("A1").Value
  
    Case 1
    
      Range("F1").Interior.Color = vbRed
      
      Select Case Range("A2").Value
      
        Case 1
          Range("F2").Interior.Color = vbRed
        Case 2
          Range("F2").Interior.Color = vbYellow
        Case Else
          Range("F2").Interior.Color = vbBlack
      End Select
    
    Case Else
    
      Range("F1").Interior.Color = vbBlue
    
      Select Case Range("A2").Value
      
        Case 1
          Range("F2").Interior.Color = vbMagenta
        Case 2
          Range("F2").Interior.Color = vbBlue
        Case Else
          Range("F2").Interior.Color = vbCyan
    End Select
    
  End Select
  
End Sub
・ツリー全体表示

【78539】Re:階層ごとにキーワード例えばifの色を...
発言  独覚  - 16/11/2(水) 14:59 -

引用なし
パスワード
   ▼β さん:
If 〜 Then
  〜
  If 〜 Then
    〜
  End If
End If

のような場合に対応がわかりやすいように外側のIfと内側のIfで色を変えたいのでは?
・ツリー全体表示

【78538】Re:階層ごとにキーワード例えばifの色を...
発言  β  - 16/11/2(水) 12:44 -

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

>階層ごとにキーワード例えばifの色を変えたいのですが、方法はありますか?

はい。なんとでもなると思います。
でも、質問文が、なぞなぞ のような感じです。

階層って?
if の色を変える?

具体的な例を、言葉で説明できませんか?

たとえば、マクロを忘れて、小学生に、方眼紙に色を塗ってください。
このような条件で塗ってくださいね と、そう指示して、ちゃんと、
その小学生が色を塗れるように。
・ツリー全体表示

【78537】階層ごとにキーワード例えばifの色を変え...
質問  北海  - 16/11/2(水) 11:09 -

引用なし
パスワード
   階層ごとにキーワード例えばifの色を変えたいのですが、方法はありますか?
テキストエディターを使うのでなく、VBA上で設定できないのでしょうか?
・ツリー全体表示

【78536】Re:AutoFilterによる 配列を使ったあい...
発言  マナ  - 16/11/1(火) 20:37 -

引用なし
パスワード
   ▼めがめが さん:
フィルターオプション(詳細設定)を使いましょう。
使ったことがないなら、まずは手作業で可能かどうか確認してみるとよいです。
・ツリー全体表示

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