忍者ブログ
日常だったりネタだったり作品の進捗だったり……色々書きます。不定期に。
11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 管理画面

    学んだことをちょっとメモ


    こんばんは若槻です。手の痛みがひどかったので
    薬用手袋をつけながら仕事をしていました。
    痛みも抑えられついでにあったかくて一石二鳥だった((


    さて、今日は最近(じゃないのもある)学んだことを
    ちょっとだけメモしておきます。VBAですよー。




    ○テキストボックスにセルの値を入れる

      シート.Shapes("テキストボックスの名前").Select
      Selection.Characters.Text = Range("F3").Value

    →多分テキストボックスじゃなくても使えるはず。


    ○チェックボックスの名前を一気に変更する

      For p = 1 To ActiveSheet.Shapes.Count
        With ActiveSheet.Shapes(p)
          If .Name = "Check Box " & p Then
            .Select
          End If
        End With
      Next p

    →やっぱり他の図形等でも使用可能。
      一気にチェックボックスとか作成する時には便利



    他にもありますけど気力がもたないのでこの辺りで。
    VBAのサイトも造りたいなぁ……。


    拍手[2回]

    PR

    何度処理させても問題なくQRコードを出すために


    こんばんは若槻です。何ヶ月かぶりにQRコードに悩まされました。
    次回からは先輩お勧めのAccessで作ることにします。
    ExcelでQR難しいわ!


    ってことで、今日はちょっと自分用メモ。


    【状況】
    1回目の処理の時には問題なくQRコードが
    表示されるが2回目以降に「Value」や「Name」の
    エラーが出てしまう

    【原因】
    1.AddInが細かく切り替わるため
    2.むしろ「Application.EnableEvents = False」のせい
    3.何より再計算がされていない


    【考察】
    原因1 :
     処理の前後にQRのアドインのオンオフ切り換え
     →終了後にオフにしないと数回は平気 
     →だけどここに入れないと依頼元に文句言われる
     →じゃあこのままで


    原因2 :
     これをなくすと問題なくQRコードが表示される
     →でもこれがないと画面遷移が止められない
     →普段は「Application.ScreenUpdating」があれば
      いけるけどアドイン入るとこれだけじゃ無理
     →てことはこれも消せない

    原因3 : 
     処理の前に前回のものを確実に削除している
     →なのに上手くいかないということは、
      削除と本処理の間の間隔が短い?
     →じゃあ……あ、これだ。出来た


    【結果】
    Sub Main() 
      DontLook
      (削除処理)
      OKLook
      Calculate
      For i = 1 to 3
        WHX.Range("A1").Value = WHX.Range("A1").Value + 1
      Next
      WHX.Range("A1").Value = ""
      DontLook

      (メイン処理)
      OKLook
    End Sub

    ※DontLookとOKLookはこちらの記事参


    【解説】
    1.最初に削除処理(これを見せないために最初のDontLook)
    2.一度OKLookで機能を復活させてから再計算処理(緑部分)
      「Calculate」は再計算の命令
    3.もう一度DontLookで再描写等を切ってメイン処理
    4.最後にもう一度OKLookで処理を復活


    こんな感じのことやるとちゃんと動作した。
    ああもうQRコード大っ嫌いだ!

    もし同じこと悩んで彷徨いついた人が万が一にでもいたら頑張ってください。
    そしてもっといい方法があったら教えてください(笑)


    拍手[0回]

    C++はじめました

    こんばんは若槻です。最近プレイヤーに入っている音楽が
    マンネリです。そろそろ発掘に行かなくてはいけませんね……。
    とりあえずニコ動はデスクトップで観ると落ちるので
    モバイルを開こうと思います。


    さて、何だか「冷やし中華はじめました」みたいな
    タイトルですが、まんまその通りです。C++はじめました。
    最近Flashのプログラミングにも手を出し始めていますが、
    今回は趣味と暇つぶしをかねて。(実益は兼ねないのかとか言っちゃいけない)

    前にも書きましたが若槻のところにくる仕事は一定量じゃ
    ない上にいつ来るかまったく不定。ない時はまったくないです。

    で、そんな時間にさすがに飽きてきたので新しい言語を
    覚えようと選んだのがC言語。
    Javaもいいなーと思ったんですが、学生時代友人たちが
    四苦八苦していたのをよーく覚えているので回避。

    とりあえずどうやったら出来るようになるかなと模索していたら
    隣の席の同期に
    「若槻さんゲーミングやるの?」
    と尋ねられ、時間が余ってるから覚えようとしている旨を
    伝えたところC系の良さと落とし場所を教えてもらえました。

    で、実践。
    まだ”Hello World!”とか入力した値を表示するとかしか
    出来てませんが結構面白い!

    レベルが上がればゲームも作れるようになるらしいし、
    頑張ってみようと思います♪




    拍手ありがとうございます!
    以下拍手返信です。

    拍手[0回]

    VBAのサイトでも作ろうかな……

    こんばんは若槻です。頼まれた仕事にほぼ1日を費やしましたが
    思うとおりにいかず最初の辺りで止まってしまっていました。
    エラーメッセージを見せて課長に改めて状況を説明すると、
    実は送られた機械(別会社さんの機械を使う仕事だったんですが)
    自体がそもそもやりたいことにそぐわないものだったような感じでした。
    ……あれ? 私の1日……(´・ω・`)



    それはさておき、最近VBAを組むことが多くなり色々とやれることが
    増えてきました。
    Yahoo知恵袋の過去と今の質問とか見ていても
    何だか答えられそうなのとかあるし(だったら知恵袋のIDを
    取れって話ですけどね←)

    このブログでもいくつか出していますがどうせならサイトでも
    つくろうかなーと思ってしまっています。
    作ったのを公開というよりは「こんなやり方もあるよ」的な
    備忘録的なあっさりサイトだけど。

    ファンクションとかアクセスのホイール禁止とかどっかで
    偶然見つけた人の役に立ってくれないかなーと甘い考えを
    抱きつつ。



    あ、そろそろサイト5,000Hit行きそうです。
    行ったら企画用の記事をアップしますので
    皆さんよろしければ^^*

    拍手[3回]

    VBA小ネタ-ファンクション「列名変換」

    こんばんは若槻です。何だか今週は走るように日にちが
    過ぎたような気がします。年取ったせいですかねぇw


    まあそれはさておき本日は久しぶりにVBAでも。
    ただし前の続きではなくてちょっと横道にそれます。

    今回は「列番号から列名に変換する」です。

    今まで晒してきたVBAでも使ってましたが、そちらは
    人様のソースを使ってたに過ぎなかったのでちょいと
    自作してみました。

    こちら↓

    ◎ソース
    '==============================================
    ' 列番号を列名に変換
    '==============================================
    Function RetuHenkan(ByVal k As Integer) As String
      Dim RetuMei As Variant  'A~Zを格納
      Dim RetuA   As Integer  '参照するkの値が27以上の時の1桁目の文字を判断
      Dim RetuB   As Integer  '参照するkの値が27以上の時の2桁目の文字を判断
      RetuMei = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", _
                      "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
      If k > 26 Then
        RetuA = Int(k / 26)
        RetuB = k Mod 26
        If RetuB = 0 Then
          RetuA = RetuA - 1
          RetuB = 26
        End If
        RetuHenkan = RetuMei(RetuA - 1) & RetuMei(RetuB - 1)
      Else
        RetuHenkan = RetuMei(k - 1)
      End If
    End Function

    ◎説明
    1.基本
    1)受け渡し用に変数kを定義。これは何でもよし(必ず数字型)
    2)ファンクション自体は"列名"が欲しいので文字型に
    3)Variant型で定義した変数にArrayでA~Zを格納

    2.本筋
    1)kの値が27以上(=AA列以上)の時
    ・RetuAにkを26で割った値を格納。1~25の時は0、26~51の時は1、など
    ・RetuBにkを26で割ったあまりを格納。0=Z、1=A、2=B……と対応
    ?もしもRetuBが0だったら?
    →割り切れる数=Z分類なので、RetuAの値はひとつ減らし、
    RetuBには26を入れる
    =RetuHenkan(ファンクション名)にRetuAの値、RetuBの値に相当する
    文字を格納する
    2)kの値がそれ以外の時(A列~Z列)
    ・RetuHenkanにRetumeiから相当する文字を格納する


    これだけです。
    一応動作確認はしていますが私のところで大丈夫でも他の方のところで
    上手くいく保証はないのでお気をつけください。

    ちなみに使い方は標準モジュールにこれを置いて必要な時に呼び出すだけ。
    「列番号が移動してて今どこにいるのか分からない」
    「列名が必要なのに列番号しか分からない」
    という時に使えると思います。

     

    以下サイトメール返信です。
    無名拍手の皆さんもありがとうございます^^

     

    拍手[1回]


    [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8
    カレンダー
    10 2019/11 12
    S M T W T F S
    1 2
    3 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    ブログ内検索
    最新コメント
    [05/27 きり]
    [01/13 きり]
    [06/06 わんこ]
    [03/30 サイトウ]
    [06/09 yu]
    カウンター
    アクセス解析


    フリーエリア
    コガネモチ


        ◆ graphics by アンの小箱 ◆ designed by Anne ◆

        忍者ブログ [PR]