エクセルの範囲選択について小ネタ

A1,B2をctrl押しながら選択
コピーしようとすると、アラートが出てコピー出来ない。
A1とA3ならコピー可能。
この時の挙動もやや特殊で、
A5に貼り付けると、
A5=A1
A6=A3
と間を詰めてペーストされる。

しかしメモ帳などに貼り付けると、
A5=A1
A6=A2
A7=A3
と最初と最後のセルが範囲選択された状態で貼付けされる。

以上、小ネタでした。

エクセル(Excel)vbaでの変換補助マクロ

今回は面白いものを作りました。
Excelでのファジー変換です。ファジーとはあやふや、という意味です。
ダウンロードはこちらから

図で説明します。

まずは設定です。ある企業とします。支店番号001が北海道支店、山田さん、支店番号002が鈴木さんの担当、と言った感じです。
settingシートで設定しています。

今度は入力です。sheet1に移り、一部を入力して下さい。北海道なら「北海」「hokkai」「かいどう」等、何でも構いません。
(settingシートのB列なら何でもいいです)

Enterを押すとフォームが出てきますので、選択して、Enterを押して下さい。

北海道が入力されました。続けて次は「ka」で行ってみます。
osakaの「ka」、hokkaidoの「ka」のため、候補が2つです。先ほどと同じように選択してenterを押して決定して下さい。

今度は関連付けている渡辺さんの名前を出します。また「ka」で大阪を選択し、F12を押して下さい。

見事、渡辺さんの名前が出てきました。

以上です。
一件vlookupで済むのでは?と思うかもしれませんが、
支店や取引先企業の名前が多少あやふやでも出てくる利便性、これは一度使うと虜になります。

更に…

支店名から支店コードを出すようにする
地名から支店一覧を出す
取引先の担当者さんの名前から取引先名、主な商品名を出す…

他にはローマ字でもひらがなでも何でも問題なく出てくる、この気楽さは他では得ることが出来ません。

ぜひ一度お試し下さい。
効率化を越えて、仕事が楽しくなります。

ダウンロードはこちらからです。

Excel・vbaの高速化まとめ

様々な高速化手段がありますが、今回は一般的なものをまとめました。

イベントを止める
Application.EnableEvents = False
再描画を止める
Application.ScreenUpdating = False
再計算を止める
Application.Calculation = xlCalculationManual
この3つだけでokです。

他にも色々ありますが、ほぼ速度は変わりません。

マクロ名:macro1をボタンから始動させる場合のテンプレートです。

ボタンでない場合も切り分けたほうが見やすいと思います。

他のページでも説明していますが、ボタンはActiveXではなくフォームコントロールを使用して下さい。

もしエラーで止まった場合は、コンソールで
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
この3つをコピーペースト、enterで実行して下さい。

Illustrator(イラストレーター)で簡単に表を作成する

エクセルで表を作り、コピーして貼り付け、それだけでできます。

  • まずは表を作ります。場合によっては、エクセルの表を渡されるということもあるでしょう。
    分かりやすいように一箇所、縮小して表示しています。
  • 枠線のチェックを外し、範囲を大きめにとってコピーします。
    枠線のチェックを外さないと枠線ごと表になってしまいます。また、範囲を大きめに取らないと端が切れる場合があります。この辺りはエクセルとの相性問題でしょうか。
  • Illustratorに貼り付けます。完了です。
  • 内部的にもテキスト(ベクター形式)ですので、拡大縮小しても劣化することはありません。
  • 4
  • 再編集する場合は、グループ化を解除して下さい

以上です。

vbaでメール。その3 メールファイル(.emlファイル)の文字コード

jisです。shift-jisではなく、jisという文字コードがあります。

vbaから使う場合はこちらの記事を参考に、CDOで処理することを強くおすすめします。

テキストとして処理しようとするととんでもなく大変です。

vbaでメール。その2 AttachmentとAttachmentsの違い。

vbaでメール操作をした時に躓いた点を書いておきます。

AttachmentとAttachmentsは別物。

Attachmentはoutlookのインスタンスを生成した時、使うもの。vbaでメールを送受信する時に使います。

そして添付ファイルを保存する場合、Saveasfileを使う。

詳細はMSDNを参考に。

Attachmentsは別物で、メールファイルを扱う時に使うもの。

そして添付ファイルを保存する場合、Savetofileを使う。

実際のコードはこちらを参考にして下さい。

excelのボタンがおかしい

2014/12/10のアップデートでエクセルのActiveXが効かなくなるアップデートがありました。

具体的にはKB2596927、KB2553154、KB2726958というアップデートです(3つの違いはofficeのバージョンです)

ワークシートに貼られたボタンや、コンボボックス(セレクトボックスともいう、クリックするとリストが出てくるツール)、チェックボックス、ラジオボタン、テキストボックス等…色々と使えなくなっている可能性があります。

2通りの方法を用意しましたので、どちらかを使って解決して下さい。

アップデートのアンインストールで対処するにはこちら

メリット
手軽
一度で全てのマクロを復帰させることができる
デメリット
アンインストール中に万が一電源が落ちたりすると、大変危険
今後も同じようなアップデートが来る可能性がある

マクロを直接変更する方法はこちら

メリット
安全。ファイルのバックアップさえ取っておけば、ほとんどの場合大丈夫
vbaを覚えることができる。普通に便利なのでこれを機に覚えるのもいいと思います。
デメリット
難易度が高い。(やり方はリンク先のページで詳しく書いてます)

excel VBAのマクロ、ボタンが効かない その2(KB2596927、KB2553154、KB2726958)

2014/12/10のアップデートでエクセルのActiveXが効かなくなるアップデートがありました。

症状としては、ワークシートのボタンが押せない、ワークシートのセレクトボックスがおかしい、などがあります。

その1ではアンインストールする方法をお伝えしましたが、何らかの理由で無理、アップデートのアンインストールはやりたくない、と言う方はこちらの方法をお試し下さい。

 

最終的にやることは、ActiveXのボタン動作をフォームボタンに移植する、です。

作業前の一例です。sheet2のボタンを押して何かしらの処理、と言った感じです。

0

まずは移植先のフォームボタンを作ります。メニューの「開発」、「挿入」、フォームコントロールの四角ボタンを選択

2

ボタンを作りたい場所でドラッグします。後で移動、拡大縮小できるので多少大きめに作っておくと作業がしやすいです。

9999

突然ウィンドウが出てきます。新規作成をクリック。

4

するとまた突然ウィンドウが現れます。ここが「標準モジュール」内の「Module1」という移植先になります。移植先にいても仕方ないので、移植元にいきましょう。左側のsheet2をダブルクリックして下さい。

0

何やら色々と書いてあると思いますが、意味はわからなくても大丈夫です。

private sub commandbutton1_click()

endsub

の間をコピーします。

0

先ほどの「標準モジュール」内の「Module1」というところをダブルクリックし…

sub ボタン2_Click()

End sub

の間に貼り付ければ完了です。

0

 

動作確認して、うまく動けば嬉しい、楽しいです。いろいろ試行錯誤してみてください。また、これをきっかけにvbaを勉強するのも良いと思います。

 

0

 

それと最後にもう一つ、ボタンの調整方法です。右クリックでメニューが開きます。

テキストの編集で「ボタン2」などの表示を変更出来ます。

ボタンの角をドラッグすればサイズ調整、削除する場合はこの状態でescを押し、delキーで削除できます。

0

以上です。