Excel VBA質問箱 IV

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

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


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

【81233】Re:キー値と属性の組の集合を良い感じに...
回答  hatena  - 20/3/17(火) 21:20 -

引用なし
パスワード
   例えば、キャラのプロパティを設定して、コレクションに登録する部分のコードが面倒なので、シンプルに1行にしたいというときは、クラスモジュールに下記のようにメソッドを追加します。

クラスモジュール Chara
--------------------
Option Explicit

Public Name As String
Public HP As Long
Public AttacK As Long
Public Defence As Long
Public Skill As String

Public Sub Init(aCol As Collection, aName As String, aHP As Long, aAttacK As Long, aDefence As Long, aSkill As String)
  Name = aName
  HP = aHP
  AttacK = aAttacK
  Defence = aDefence
  Skill = aSkill
  aCol.Add Me, Name
End Sub
-------------------

そうすると前回の回答の使用例のコードは下記のようになります。

Public Sub test1()
  Dim colChara As Collection
  Set colChara = New Collection
  
  Dim C As Chara
  
  Set C = New Chara
  C.Init colChara, "ガイ", 200, 90, 50, "兜割り"
  
  Set C = New Chara
  C.Init colChara, "トム", 300, 30, 90, "鉄壁の守り"
  
  
  Debug.Print colChara("ガイ").HP
  Debug.Print colChara("トム").Defence

End Sub
・ツリー全体表示

【81232】Re:キー値と属性の組の集合を良い感じに...
回答  hatena  - 20/3/17(火) 20:11 -

引用なし
パスワード
   TypeがCollectionに格納出来たらいいのですが、TypeはCollectionに格納できないという制限があります。

代わりにクラスを使えばどうでしょうか。
クラスモジュールを新規作成して、名前を Chara とします。
下記のコードを記述します。

Option Explicit

Public Name As String
Public HP As Long
Public Attack As Long
Public Defence As Long
Public Skill As String


---
使用例

Public Sub test()
  Dim colChara As Collection
  Set colChara = New Collection
    
  Dim C As Chara
  Set C = New Chara
  With C
    .Name = "ガイ"
    .HP = 200
    .Attack = 90
    .Defence = 50
    .Skill = "兜割り"
  End With
  colChara.Add C, "ガイ"
  
  Set C = New Chara
  With C
    .Name = "トム"
    .HP = 300
    .Attack = 30
    .Defence = 90
    .Skill = "鉄壁の守り"
  End With
  colChara.Add C, "トム"
  
  Debug.Print colChara("ガイ").HP
  Debug.Print colChara("トム").Defence

End Sub


クラスではパブリック変数を宣言してますが、プロパティを使ったりメソッドを追加したりするとより使いやすくできます。
・ツリー全体表示

【81231】Re:キー値と属性の組の集合を良い感じに...
お礼  りった  - 20/3/14(土) 13:58 -

引用なし
パスワード
   なるほど! ありがとうございます。
・ツリー全体表示

【81230】Re:複数項目 オートフィルターについて
お礼  みも  - 20/3/12(木) 16:58 -

引用なし
パスワード
   ▼γ さん:
>ああそうかSplit関数を使う場面だったかな。
>試して見てください。


Splitでうまく作動しました!
教えて頂き、誠にありがとうございました。
・ツリー全体表示

【81229】Re:複数項目 オートフィルターについて
発言  γ  - 20/3/12(木) 15:06 -

引用なし
パスワード
   ああそうかSplit関数を使う場面だったかな。
試して見てください。
・ツリー全体表示

【81228】Re:複数項目 オートフィルターについて
発言  γ  - 20/3/12(木) 14:08 -

引用なし
パスワード
   Array(KAKUNIN.Cells(4, 5))は、無効です。
Array("100,200")などと書いているのと同じですから。

(1)Arrayの要素にセルを指定するか,
または、
(2)複数のセルに入れて置いて
a = Application.Index(Cells(4, 5).Resize(1,2).Value, 1, 0)
などとして、Criteria1:=a とするかです。
・ツリー全体表示

【81227】Re:複数項目 オートフィルターについて
発言  みも  - 20/3/12(木) 13:27 -

引用なし
パスワード
   説明不足で失礼いたしました。
シートのセットはしており、autofilterのコードのみ抜粋しております。

説明がないと分かりにくいかと思ったので
MATはシート名ですという説明のつもりでいれさせていただきました。

紛らわしく申し訳ありませんでした。
よろしくお願い申し上げます。
・ツリー全体表示

【81226】Re:複数項目 オートフィルターについて
発言  γ  - 20/3/12(木) 13:18 -

引用なし
パスワード
   >MAT=シート名
>MAT.Rows(8).AutoFilter Field:=3, Criteria1:=Array("321618001", "321618005"), Operator:=xlFilterValues

MATをワークシート変数とするなら、
Set MAT = シート名
としないといけない。

文字列として使うなら、
Worksheets(MAT)という使い方になります。

このあたりを検討されたらいかがですか?
それ以外のところは見ていません。
・ツリー全体表示

【81225】複数項目 オートフィルターについて
質問  みも  - 20/3/12(木) 12:44 -

引用なし
パスワード
   オートフィルターのVBAで教えていただきたく質問させて頂きます。

複数の項目でフィルターをかけたく、
コード内で指定した場合はフィルタされるのですが
エクセルに同じ内容を記載して実行した場合フィルターできません。

MAT=シート名

KAKUNIN=シート名

MAT.Rows(8).AutoFilter Field:=3, Criteria1:=Array("321618001", "321618005"), Operator:=xlFilterValues
→結果問題なし


KAKUNIN.Cells(4, 5)に記載の内容=>"321618001", "321618005"

MAT.Rows(8).AutoFilter Field:=3, Criteria1:=Array(KAKUNIN.Cells(4, 5)), Operator:=xlFilterValues
→何も選択されず

特にエラーはでません。
色々と試行錯誤して実験してみたのですが
どうしても解決できず、ご教授頂きたくおねがいいたします。
・ツリー全体表示

【81224】Re:複数列を複数シートへの転記について
発言  マナ  - 20/3/10(火) 20:17 -

引用なし
パスワード
   『複数列の複数シートへの転記について』(りんごジャム)
ht tp://www.excel.studio-kazu.jp/kw/20200308235059.html
・ツリー全体表示

【81223】Re:複数列を複数シートへの転記について
発言  マナ  - 20/3/8(日) 23:39 -

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

>列のコピーから、シートのアクティブといった二重ループを試みたのですが

アクティブにする費用ありません。
どのシートの列か、明示するだけでよいです。
こんな感じで。

Sheets("Sheet1"),Columns(1).Copy Sheets("Sheet2"),Columns(2)
・ツリー全体表示

【81222】複数列の複数シートへの転記について
質問  S  - 20/3/8(日) 23:33 -

引用なし
パスワード
   VBA初心者です。

あるシートのA〜Hの列を複数のシート(A列はこのシート、B列はこのシート)
といった具合に転記したいと考えております。
列のコピーから、シートのアクティブといった二重ループを試みたのですがうまく動きません。ひたすらコピーのみがループするのみ。
(イメージは、A列コピー→ xシート貼り付け→B列コピー →yシート貼り付けです)

作動するために、お知恵をお借りできないでしょうか。
・ツリー全体表示

【81221】複数列を複数シートへの転記について
質問  S  - 20/3/8(日) 23:30 -

引用なし
パスワード
   VBA初心者です。

あるシートのA〜Hの列を複数のシート(A列はこのシート、B列はこのシート)
といった具合に転記したいと考えております。
列のコピーから、シートのアクティブといった二重ループを試みたのですがうまく動きません。ひたすらコピーのみがループするのみ。
(イメージは、A列コピー→ xシート貼り付け→B列コピー →yシート貼り付けです)

作動するために、お知恵をお借りできないでしょうか。
・ツリー全体表示

【81220】複数列を複数シートへの転記について
質問  S  - 20/3/8(日) 23:29 -

引用なし
パスワード
   VBA初心者です。

あらシートのA〜Hの列を複数のシート(A列はこのシート、B列はこのシート)
といった具合に転記したいと考えております。
列のコピーから、シートのアクティブといった二重ループを試みたのですがうまく
(イメージは、A列コピー→ xシート貼り付け→B列コピー →yシート貼り付けです)

作動するために、お知恵をお借りできないでしょうか。
・ツリー全体表示

【81219】Re:vbaのsampleコードが欲しいです
発言  初心者  - 20/3/8(日) 12:34 -

引用なし
パスワード
   すみません、ありがとうございます。
・ツリー全体表示

【81218】Re:vbaのsampleコードが欲しいです
発言  マナ  - 20/3/8(日) 7:15 -

引用なし
パスワード
   ▼初心者 さん:
>関数自体は把握してるので、それををvbaで表記するとどうなるのかが知りたくて..w

こんな感じです。

Sub test()
  Dim r As Range
  Dim f As String
  
  Set r = Worksheets("B").Range("G3:G10")
  f = "=IF(D3<>"""",IF(B3<>"""",B3,""""),IF(E3<>"""",""NG"",""""))"
  
  r.Formula = f
  r.Value = r.Value

End Sub
・ツリー全体表示

【81217】Re:vbaのsampleコードが欲しいです
発言  初心者  - 20/3/8(日) 6:58 -

引用なし
パスワード
   関数自体は把握してるので、それををvbaで表記するとどうなるのかが知りたくて..w
失礼しました。シートは一つのみ使う感じです。
・ツリー全体表示

【81216】Re:vbaのsampleコードが欲しいです
発言  マナ  - 20/3/8(日) 6:27 -

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

数式がよいのでは。あるいは入力規則とか。

=IF(D3<>"",IF(B3<>"",B3,""),IF(E3<>"","NG",""))

>シートAとBがあります。

シートAが、どこにも使われていませんが?
・ツリー全体表示

【81215】vbaのsampleコードが欲しいです
質問  初心者  - 20/3/8(日) 5:25 -

引用なし
パスワード
   シートAとBがあります。

シートBのD3~D10に文字が入力されると、G3~G10にB3~B10に入力されている文字が表示される。(入力と出力する列は同じ)

シートBのE3~E10に文字が入力されると、"NO"などの文字を出力。
※ただし、D3~D10に文字が入っておらず、E3~E10へ入力をすると、B3~B10の値を出力する。

上記のサンプルコードが欲しいです..。
・ツリー全体表示

【81214】Re:VBAのVlookupについて
発言  as  - 20/3/7(土) 19:45 -

引用なし
パスワード
   そうだったんですね!

VBAを覚えたてで分からないことが多々あり、参考になります!
ありがとうございました!
・ツリー全体表示

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