ExcelVBAでシートに高速にCSVを読み込む

Dim ws As Worksheet
Set ws = ActiveSheet ' CSV のデータを取り込むシート

Dim qt As QueryTable
Set qt = ws.QueryTables.Add(Connection:="TEXT;D:\Tips.csv", Destination:=ws.Range("A1")) ' CSV を開く
With qt
    .TextFilePlatform = 932          ' 文字コードを指定
    .TextFileParseType = xlDelimited ' 区切り文字の形式
    .TextFileCommaDelimiter = True   ' カンマ区切り
    .RefreshStyle = xlOverwriteCells ' セルに上書き
    .Refresh                         ' データを表示
    .Delete                          ' CSV との接続を解除
End With

MFCのCArray を qsort する

CArray の GetData メソッドで中身がまるまるもらえて、しかも中身書き換えてOKなのです。

struct StructHoge
{
    int number;
};

...

CArray <StructHoge, StructHoge> arrayHoge;

...

// ソート関数
int compareHoge(void* context, const void* a1, const void* a2)
{
    StructHoge* p1 = (StructHoge*)a1;
    StructHoge* p2 = (StructHoge*)a2;

    if (p1->number != p2->number)
    {
        return p1->number - p2->number;
    }

    return 0;
}

...

// ソート
StructHoge* pHoge = arrayHoge.GetData();
qsort_s((LPVOID)pHoge, arrayHoge.GetCount(), sizeof(StructHoge), compareHoge, NULL);

JSON.NET (NEWTONSOFT.JSON) の基礎

オブジェクト はJObject
配列はJArray
文字列や数値はJValue

配列のループはこんな感じ

JArray jarr = (JArray)jres["results"];
foreach (JObject jobj in jarr)
{
  JValue nameValue = (JValue)jobj["name"];
  string name = (string)nameValue;
  JValue priceValue = (JValue)jobj["price"];
  long price = (long)priceValue;
  Console.WriteLine($"name is {name}, price is {price}.");
}

Visual Studio の IntelliSense拡張「Visual Studio IntelliCode」 

IntelliSenseの強化版。
機械学習の力を使って、みんながよく使う関数を優先して上に出してくれる。

Visual Studio2017 の新しいバージョンからのみ対応してるみたい。
2018/9/13現在、C++でもいけたよ。

Visual Studioの拡張機能から「intellicode」で探して追加する。

jquery使ってjson読んで出力

...

<p>
<span id="output_date"></span> Update
</p>
<p>
Version <span id="output_version"></span>
</p>


<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $.getJSON("https://hoge.com/hoge.json" , function(data) {
        var elem = document.getElementById("output_date");
        elem.innerText = data.date;
        var elem = document.getElementById("output_version");
        elem.innerText = data.version;
    });
});
</script>

ExcelVBA フォームのコンボボックス初期化手順

_Initialize() で初期化する

Private Sub UserForm_Initialize()
    
    'コンボボックスに項目を追加
    ComboBox1.AddItem "2009年1月"
    ComboBox1.AddItem "2009年2月"
    ComboBox1.AddItem "2009年3月"
    ComboBox1.AddItem "2009年4月"
    ComboBox1.AddItem "2009年5月"
    ComboBox1.AddItem "2009年6月"
    ComboBox1.AddItem "2009年7月"
    ComboBox1.AddItem "2009年8月"
    ComboBox1.AddItem "2009年9月"
    ComboBox1.AddItem "2009年10月"
    ComboBox1.AddItem "2009年11月"
    ComboBox1.AddItem "2009年12月"
    
    '初期値を指定
    ComboBox1.ListIndex = 5
    
End Sub