新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

Excel2次元配列コピー

2015-11-27 13:41:17 | Excel

Sub UserForm_InitializeCall()
    Dim dicTmp As Object
    Dim VntTmp As Variant
    Dim CpyVnttmp As Variant
    
    Dim VntV As Variant
    Dim i As Integer
    Dim j As Integer
    

    Set dicTmp = CreateObject("Scripting.Dictionary")    'ディクショナリーを使わないと要らないでしょう。
    With Worksheets("生産者")
        VntTmp = .Range("A2", .Range("D65536").End(xlUp)).Value

    End With
    
    'If Not IsArray(VntTmp) Then   'ここから3行は普通は必要ないようです。
    '    VntTmp = Array(VntTmp)    '上の3行でリストの元を作成してる場合必要ないようです。
    'End If
                                      'VntTmpの行数は分からないのが普通です。
    i = UBound(VntTmp, 1)             'データの行数と合う
    j = UBound(VntTmp, 2)             'データの項目数と合う
    
    VntTmp(10 + 1, 2 + 1) = "Chiba"  'データの部分だけ数えると行、カラムどちらも+1しないとずれますね。添え字は0から。
    
    CpyVnttmp = VntTmp        '2次元の配列のコピーがこれで出来るんですが、何か分かりづらいですよね。
    
    For Each VntV In VntTmp          'この場合のように隙間が無いワークシートから表を作る場合は必要ないようです。
        On Error Resume Next
        dicTmp.Add VntV, Empty
        On Error GoTo 0
    Next
    
    
    
    With 農家選択.ListBox1
     .List = VntTmp
     .ColumnWidths = "30;150;100;20"
     .ColumnCount = 4
    End With
    
    
    Set dicTmp = Nothing              'ディクショナリーを使わないと要らないでしょう。
    
    農家選択.Show

End Sub
デバックで見たんですが、確かに実体が作られてました。VBとか一般の言語はアドレスだけが

コピーされるはずです。


コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 紅白でお目当てはですね。 | トップ | Excelリストボックスで遊んで... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (ex_coconuts)
2015-11-27 18:56:59
こんばんは~。
なにやらまたまた難しそうなことを考えているようですね。
今週に入って急に寒くなりましたね~。
そちらの雪はいかがですかぁ?
        
返信する
コメント有り難う御座います。 (isam)
2015-11-28 17:10:29
 今年は当初は雪が早いのかなあと思ってましたが、どうやら遅い感じになってきました。
 でもこれからは一晩で根雪と言うこともあるので、油断は出来ないのですが、油断してます。
 Excelは役に立つことをするのには、一番適してますね。VBなどで最初から最後まで作るのはかなり大変ですからね。ExcelならVBAでやりたいとこだけできます。但し、ガラパゴスソフト(約してガラソフ(^0^))ですので一般的なソフトとは趣がななり違います。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Excel」カテゴリの最新記事