Excel VBA質問箱 IV

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

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


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

【79579】Re:組み込み定数について
お礼  Excel2003使用者  - 18/1/16(火) 20:31 -

引用なし
パスワード
   >Public Sub Set系列Line(myChart As Chart, 系列 As Long, LineStyl As Excel.XlLineStyle, 色 As Long, 太さ As Excel.XlBorderWeight, MarkerStyl As Excel.XlMarkerStyle)

これでもOKですか。参考にします。
w101709x さん、ありがとうございます。
・ツリー全体表示

【79578】outlookメールにセル貼り付け
質問  excel2016  - 18/1/16(火) 13:09 -

引用なし
パスワード
   メール本文
------------------

文章1

表(貼り付け)

文章2

という単純な文章を作りたいのですがなかなか上手く行きません。


下記のソースを利用すると

Sub macro()
  Dim Ap As Object
  Dim M As Object
  'Excelで選択しているものをコピー(図でも表でもOKです)
  Selection.Copy
  Set Ap = CreateObject("Outlook.Application")
  Set M = Ap.CreateItem(0)
    M.BodyFormat = 3 'リッチテキスト形式
    M.Body = "テストです" 'メールの本文
    M.To = "test @ test" 'アドレス
    M.Subject = "テスト" '件名
    M.Display '画面を表示
    With Ap.ActiveInspector
      '貼り付け
      .WordEditor.Windows(1).Selection.Paste
    End With
End Sub
---------------------------------------------------
メール本文
------------------
表(貼り付け)


文章


となってしまいます。


ーーーーーーーーーーーーーーーーー

Dim str1 As String
Dim str2 As String
Dim str3 As String

と変数を用意して

xxx.body = str1 & str2 & str3


としようとしたのですが変数に
Range(A1:B9).text
のような複数セルの値が入らず困っています。

どなたかご教授願えないでしょうか。
・ツリー全体表示

【79577】Re:組み込み定数について
発言  w101709x  - 18/1/16(火) 5:00 -

引用なし
パスワード
   そのまま

Public Sub Set系列Line(myChart As Chart, 系列 As Long, LineStyl As Excel.XlLineStyle, 色 As Long, 太さ As Excel.XlBorderWeight, MarkerStyl As Excel.XlMarkerStyle)

と使える気がしますが。
・ツリー全体表示

【79576】Re:不規則な範囲の合計を求めたい
発言  γ  - 18/1/15(月) 18:10 -

引用なし
パスワード
   こちらはVBAの質問掲示板です.
関数は別の場所で質問してください。
・ツリー全体表示

【79575】不規則な範囲の合計を求めたい
質問  かりん  - 18/1/15(月) 17:51 -

引用なし
パスワード
   初めまして、お力をお借りしたく投稿させて頂きます。

ファイルの構成は下記の通りです。

●シート1:各コードごとの手数料合計を求めたい表

B6セルに集計の元になるコードが入力されており
H6〜H9にそのコードに該当する手数料が入力されています。
コードごとに範囲が異なっており、月によっても変動します。

   A    B  C  D  E  F  G  H
1    
2
3
4
5 名称 コード             手数料
6  a   111             1,000
7                    1,000
8                    1,000
9                    1,000
10  b   112             2,000
11                    2,000
12  c   113             3,000
13                    3,000
14                    3,000
15                    3,000

●シート2:シート1の手数料の一覧表

    A     B
1 コード  手数料    
2   111   4,000
3   112   4,000
4   113  12,000
5 
6
7
8
9
10


上記のシート1のコードごとで不規則に範囲が変動する手数料の合計を
シート2で関数を使ってまとめたいと考えていたのですが
コードはVLOOKUPで参照できるとしても
SUM関数の範囲を可変にする方法が思いつきません。
関数については勉強中ですが業務に関わることだったので
あまり時間が掛けられないため、こちらに投稿させて頂きました。
アドバイスなど頂けたらありがたいです。
どうか、宜しくお願い致します。
・ツリー全体表示

【79574】Re:組み込み定数について
お礼  Excel2003使用者  - 18/1/14(日) 22:18 -

引用なし
パスワード
   γさん、回答ありがとうございます。
今までオブジェクトブラウザはちらっと目に入るくらいで、
しっかり見て活用していませんでした。

オブジェクトブラウザで 
Excel.XlBorderWeightクラス のメンバにxlHairline
を見つけました。

イミディエイトウインドウで
?TypeName(xlHairline)
でLongを確認しました。

これからはオブジェクトブラウザの活用、TypeNameの活用を心がけます。

すっきりしました。ありがとうございました。



・ツリー全体表示

【79573】Re:組み込み定数について
回答  γ  - 18/1/14(日) 18:54 -

引用なし
パスワード
   (1)オブジェクトブラウザで 例えば xlHairlineを検索してみてください。
Excel.XlBorderWeight のメンバ とあり、他のメンバーの値も分かります。
Longでいいだろうと推測がつきます。

(2)またイミディエイトウインドウで
?TypeName(xlHairline)
とすると、
Long
と返ってきます。

結論:
オブジェクトブラウザの活用、TypeNameの活用などをトライしてみて下さい。
・ツリー全体表示

【79572】組み込み定数について
質問  Excel2003使用者  - 18/1/14(日) 11:13 -

引用なし
パスワード
   組み込み定数をプロージャに渡す場合、下記のように、
変数の宣言は無指定つまりVarientで使用してますが、
これでよいのでしょうか?

Public Sub Set系列Line(myChart As Chart, 系列 As Long, LineStyl, 色 As Long, 太さ, MarkerStyl)
  With myChart.SeriesCollection(系列)
    .Smooth = True
    .Border.ColorIndex = 色     '紺11/白2
    .Border.Weight = 太さ      '線の太さ'xlHairline
    .Border.LineStyle = LineStyl  '線表示'xlContinuous
    .MarkerStyle = MarkerStyl    'xlNone
  End With
End Sub

組み込み定数をネットで調べたら

組み込み定数は「vbYesNo」や「vbOK」など頭の文字が「vb」から始まるものと、
「xlLeft」などxlから始まるものの2種類があります。

この違いは、ExcelのVBA内で用意されているものは「xl」から始まり、
Visual Basicで用意されているものは「vb」から始まります。
このようにそれぞれ用意されている場所が異なります。

とありましたが、変数の宣言については、見つけられなかったので質問しました。
・ツリー全体表示

【79571】Re:ifのネストを浅くしたい
お礼  なー  - 18/1/13(土) 0:08 -

引用なし
パスワード
   なるほど!
不等号の向きを逆にして条件式の位置を変えてあげれば
一つ目のCaseがTrueの際、後がスルーされるみたいなことを回避できますね!
なんというかすごくしっくり来ました。
休み明けに実データで試してみようと思います。
ご回答ありがとうございました。
・ツリー全体表示

【79570】Re:ifのネストを浅くしたい
回答  γ  - 18/1/12(金) 23:21 -

引用なし
パスワード
   色々な書き方があると思いますが、一例です。(テスト未済。)

Sub ChangeColor()
  Dim rng1 As Range
  Dim rng2 As Range
  Dim rng3 As Range
  Set rng1 = Range("A1")
  Set rng2 = Range("B1")
  Set rng3 = Range("C1")

  Select Case Time
    Case Is <= CDate("10:00")
    Case Is <= CDate("11:00")
      If rng1.Value Like "*○○*" And rng2.Value Like "*い*" Then
        rng1.Interior.ColorIndex = 3
      End If
    Case Is <= CDate("12:00")
      If rng1.Value Like "*△△*" And rng3.Value Like "*う*" Then
        rng1.Interior.ColorIndex = 4
      End If
    Case Is <= CDate("13:00")
      If rng1.Value Like "*□□*" And rng3.Value Like "*う*" Then
        rng1.Interior.ColorIndex = 5
      End If
    '以下同様につき省略
  End Select
End Sub
・ツリー全体表示

【79569】ifのネストを浅くしたい
質問  なー  - 18/1/12(金) 22:59 -

引用なし
パスワード
   こんにちは
現在、条件によってセルの背景色を変えるマクロを作成しています。
その条件というのが、10:00〜17:00までの1時間ごとに、その時間以降、
セルの値が特定のものだったら色を変える、というものです。

A1セルの値は不定の時間によって○→△→□と変化していき、
B1、C1セルの値は不変です。

そこで下記のようなマクロを作成しました。

Sub ChangeColor()

Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Set rng1 = Range("A1")
Set rng2 = Range("B1")
Set rng3 = Range("C1")

  If Time > CDate("10:00") Then
    If rng1 Like "*○○*" And rng2 Like ("*い*") Then
      rng1.Interior.ColorIndex = 3
    End If
    
    If Time > CDate("11:00") Then
      If rng1 Like "*△△*" And rng3 Like ("*う*") Then
        rng1.Interior.ColorIndex = 4
      End If
      
      If Time > CDate("12:00") Then
        If rng1 Like "*□□*" And rng3 Like ("*う*") Then
          rng1.Interior.ColorIndex = 5
        End If
      
        If Time > CDate("13:00") Then
          
          If Time > CDate("14:00") Then
          
            If Time > CDate("15:00") Then
            
              If Time > CDate("16:00") Then
              
                If Time > CDate("17:00") Then
                
                
                End If
              End If
            End If
          End If
        End If
      End If
    End If
  End If

End Sub

とりあえず狙ったようには動くのですが、他サイトなどを見ると
あまりネストを深くするべきではない、などの記述がありますし
自分で見ても混乱する時があります。
また、時間と時間の間の条件は、今後追加や削除がありえます。
Select〜Caseを使えばいいらしい、というのは目にしたのですが
どう記述すればよいかがいまいち分かりません。
このような記述をより浅く、もしくは別の方法でより分かりやすく
記述するにはどうすればよいでしょうか。
よろしくお願いいたします。
・ツリー全体表示

【79568】ファイル名の先頭にXが勝手に付いた
質問  おぱぱ  - 18/1/10(水) 11:48 -

引用なし
パスワード
   EXCELでVBAを作って、自分の作業に使っています。
今回作業をしたら、いつの間にか、ファイル名が次のように変わっていました。
X・・・・29-3-10.6.xlsm ・はファイル名を伏字にした部分です。
データ更新が容易なように元のデータにリンクを貼っていたのですが、
データ項目が増えたのを失念して、エラー表示が出たのに、リンクを更新したのが
きっかけになったのかと思います。
リンク元とリンク先に前記のように×が付いてしまいました。
EXCELに詳しい人にも聞きましたが、見たことが無いそうです。
原因と処置を教えて下さい。
EXCELは、EXCEL2013、OSはWINDOWS7です。
・ツリー全体表示

【79567】Re:イベント管理:複数ファイルのイベント...
発言  γ  - 18/1/6(土) 7:38 -

引用なし
パスワード
   普通に考えて、昨年の7月に投稿された質問者さんが、
こちらを常に見ている可能性はとても低いので、
その方からの回答は期待できないと考えるのが自然です。

また、丸投げ的な質問になっているのではないか、
というやりとりがあったにもかかわらず、
そのスレッドに付け加える形で、
その質問者にコードを下さい、というのはいかにも安直で、
理解しかねます。

他人のスレッドに割り込んで便乗質問を追加するのではなく、
ご自分であらたなスレッドを立ち上げたほうがよいと思いますよ。

その場合、 17/7/7(金) 20:44 に提示がありましたコードを
理解するようにしてください。
そのうえで、どこまでご自分でトライされたかを付記して、質問して下さい。
なお、ご自分の場合のシートレイアウトを
あらためて説明してもらうとよいと思います。
・ツリー全体表示

【79566】Re:イベント管理:複数ファイルのイベント...
質問  同じ悩み  - 18/1/5(金) 13:25 -

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

希望された 複数ファイルで管理されたイベントの統合するための VBA code は完成することができましたでしょうか?
私も同じ悩みをもっており、このログにたどり着きました。
もし、よろしければCodeを教えていただけると助かります。
よろしくお願い致します。
・ツリー全体表示

【79565】Re:セル範囲内のユニークな文字列数をカ...
発言  Aisa  - 18/1/1(月) 2:13 -

引用なし
パスワード
   ▼γ さん:
重ね重ね失礼いたしました。
・ツリー全体表示

【79564】Re:セル範囲内のユニークな文字列数をカ...
発言  γ  - 17/12/31(日) 21:09 -

引用なし
パスワード
   なにせ
ht tp://www.vbalab.net/index.html
が正面入り口ですから。
ここには、VBA質問箱としか書いてないんです。
・ツリー全体表示

【79563】Re:セル範囲内のユニークな文字列数をカ...
お礼  Aisa  - 17/12/30(土) 22:31 -

引用なし
パスワード
   ▼γ さん:
>ああ、やっぱりね。
>こちらはVBA質問箱なので、ワークシート関数の質問はテーマ違いですね。
>今後は気をつけてください。

ここは、Excel及びVBAかと思いきや、VBA専門だったのですね、知らずに
質問をして大変失礼いたしました。
ご丁寧にありがとうございました。
・ツリー全体表示

【79562】Re:セル範囲内のユニークな文字列数をカ...
発言  γ  - 17/12/29(金) 6:42 -

引用なし
パスワード
   ああ、やっぱりね。
こちらはVBA質問箱なので、ワークシート関数の質問はテーマ違いですね。
今後は気をつけてください。

ご自分で気づかれるかと思って、質問の形にしました。

あと、よくある議論は、
"対象範囲の中に空白セルがある場合には、エラーになってしまうんです"
という話ですね。
この場合は、配列関数を使って、SUM IFERROR COUNTIFを組み合わせます。
一緒に抑えておくとよいでしょう。

ちなみに、範囲が不定形だったり、複雑な条件がある場合は、
VBAでやることになりますね。
dictionaryを使って
dic(r.Value) = Empty
として登録すれば、
dic.Countが求めるものですね。
お決まりのパターンです。
・ツリー全体表示

【79561】Re:セル範囲内のユニークな文字列数をカ...
発言  Aisa  - 17/12/29(金) 4:35 -

引用なし
パスワード
   どうやらURLが入力できなかったようです。以下の頭にs付の例のやつを加えてください。
bellcurve.jp/statistics/blog/15370.html 

関数の機能を使うだけではなく、ロジックをかますことにより、
結果として求める答えをシンプルな構造で導きだす、とんでもなく
素晴らしい方法であったと思います。

このような発想力は私にはないので、非常に感銘を受けました。
是非ご覧になってください。
・ツリー全体表示

【79560】Re:セル範囲内のユニークな文字列数をカ...
お礼  Aisa  - 17/12/29(金) 4:29 -

引用なし
パスワード
   お返事を書いたのですが、「本分に禁止語句が含まれています」と言われ、
お返事を送信できません。
内容としては、当初自力で調べようとした時のようにネットで検索して、
ご質問の”例”を示そうと思いましたが、その過程で、回答が載っている
サイトを見つけましたので、無事解決致しました、という内容です。
ありがとうございました!

該当サイト
Bell Curve 統計 WEBというサイトの
Excel 関数で重複を除いてデータの件数を求める方法
という記事です
・ツリー全体表示

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