Excel VBA 質問スレ Part62
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part61
http://mevius.5ch.net/test/read.cgi/tech/1556203263/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured >>850
大を「おおきい」で変換するか「だい」で変換するかで位置が変わるのと同じやね
う
え
大 (おお)
か
き
大 (だい) ふりがなは集計とかで計算が合わない原因の1つ
非常にヤバイ あ、勝手に2回書き込まれた。
2回押したわけじゃない。(時間が同じ) 同時にマルチポストするスクリプトのテストなんでしょ?わたししってます utf8でテキストファイルを読み書きするにはADODB.Stream使うしか無いんですか? >>860
テキスト取り込み機能の、文字コードの選択肢に、
普通にUTF-8入ってるけど。 >>863
データ → テキストまたはCSVから → テキストファイル選択 → インポート → 元のファイル「65001:Unicode (UTF-8)」
バージョンによって、多少表記は違うと思うけど。 >>864
ありがと、試してみる。
utf8でファイルへ書き出す方法はある?
ADODB.Stream以外で。 >>865
なぜDODB.Streamを避ける?参照設定ならVBAで追加できるぞ >>866
ゴメン、それをここで議論するつもりは無いんだ。
utf8でテキストファイルを読み書きするにはADODB.Stream使うしか無いのか知りたいだけ。 言い直す。
utf8でテキストファイルを読み書きするのにADODB.Stream以外の方法があれば知りたい。 言い直す。
utf8でテキストファイルを読み書きするのにADODB.Stream以外の方法があれば知りたい。 どんな方法でもいいのなら、文字コード変換プロシージャを自作すればいい
変換テーブルはネットに落ちてる >>868
APIで変換できる
ADODB.streamも内部では同じAPIを呼んでるはず
http://www.t-net.ne.jp/~cyfis/win_api/sdk/MultiByteToWideChar.html .netのライブラリ呼び出すとか?
ADODBを避けたい理由がわからんけど 違う視点で調べてみるとか、
UTF-8じゃなくて、中国語をどうにかしたい、とかさ。 >>868
方法はいくつもある
無料のWebAPIもあるし、コマンドラインでnkfを呼び出したり、テキストボックスのプロパティをいじったり
あとは理由、目的、条件などをはっきりさせてくれないと話の続けようがない 参照とかAPIとか事務のおばちゃんには難しいのでは?
VBAを使う理由って何もさせてくれない設定だったよね? 何設定って
ぼく働いたことないから実態わかりませんてこと? ・2列の一致する組み合わせを数える方法(ex.A列に野菜B列に果物が書かれている時AがトマトかつBがりんごの行をカウントしたい)
・数式の結果の文字の先頭を色付けする方法(ex.A1セルに【=IF(条件式,"☆優先","▽後回し")】が入力されていてその結果の文字の先頭の記号だけを色付けしたい)
この2つのやり方教えてください。 >>879
対象範囲をForで回して評価します。
式で表現されたセルの部分文字列の書式を違えることは出来ないんじゃ? >>879
最初の方は何をしたいのか意味が分からない。
トマトが野菜かどうかはどうやって判定するの?
2番目の方は数式の結果はそのセルのValueで取れるから数式関係無くね?
VBAでやりたいのか数式でやりたいのかも不明。 for each c in [a2:a20]
if c.value & c.offset(,1).value ="トマトりんご" then cnt =cnt + 1
next
msgbox "うんこ" トマトは野菜だがフルーツトマトはフルーツである。○か×か? >>881
このスレにわざわざ書き込んでるんだからさすがにVBAでやりたいんだろうと思うけど。 >>879
一つ目は数式でできるがVBAでないと駄目なのか? 質問ですが、ExcelのワークシートとVBAとでは、日付の扱い(起点?)が異なるのでしょうか?
例えば、数字の「5」をDate型で表示すると、
・ワークシート: 1900/01/05
・VBA : 1900/01/04
https://i.imgur.com/8Iq99R4.jpg
このように1日ズレますが、これはどういう事なのか…、これで合ってるのでしょうか?
(Excelのバージョンは2007です)
何かアドバイスを頂けると幸いです https://www.tipsfound.com/vba/05cdate
CDate
値に数値を指定したときは、日付型の初期値 1899/12/30 0:0:0 にその数値の日を足した日付に変換します
https://www.officepro.jp/excelfunc/date/index0.html
日付のシリアル値は、1900年1月1日が基準日となりシリアル値は「1」となります。
らしいぞ >>892
ソースのリンク先まで貼って頂き、ありがとうございます。
シリアル値の「1」を日付で表示した場合、やはりワークシートとVBAで起点が1日ズレてるんですね
「期限の5日前までのものを抽出する」って操作をワークシートでやってたのですが
これをVBAに置き換えたら何か結果が変で…、しばらく変だったことにも気付かず…
とりあえず、そういうものと思って注意して使うしかないですね
しかし>>848のソートもだけど、いろいろ思いがけないことがあるもんですね 勤務表の作成の相談です。
以前も少しさせていただいたのですが、下記の条件で作ることは可能ですか?
1月の勤務時間160時間 週40時間
週休2日
月に1度は2連休を入れる
勤務形態の組み合わせは2種類
(1)昼8、昼12、遅8、夜12
(2)昼8、遅8、夕8、夜8
夜12、夜8の次の日は休みで無くてはいけない
昼12.遅8の次の日は昼8、昼12を入れてはいけない
勤務の希望や休みの希望は必ずその通りにしなくてはいけない
経験年数によって行える業務も違うため、どの日も均等に業務ができるように組まなくてはいけない
業務内容は☆、△、□、◇、●の5種類 >>894
質問は可能かということだから答えるけど可能
コード晒せとか言うのであれば
長くなるのでここでは不向き
どんな形態の勤務表作るのかは知らないけど
ボタン押して勤務表の記載内容をチェックして
ダメならメッセージボックスでその旨表示して
ダメなセルを着色かなんかするようなイメージ? 盆正月GW諸々考慮しないでいいのか心配になる内容
完成してからの修正が本番になる予感 879
すいません、一つ目はcountfsでやれました。
2つ目が出来ません
直接、☆優先、とだけ文字を書いたところなら先頭だけ赤くできますが計算結果の文字の一部を赤くするにはどうすればいいですか?
関数でもVBAでも何でもいいです。openpyxlでも。 Range("A1").Characters(Start:=1,Length:=1).Font.ColorIndex = 3 >>898
これは俺が悪かった。
数式に対してはセル内文字列の一部分に対して書式の設定は出来ないようだ。
条件付き書式で出来るかと思ったけど、条件付き書式もセル内文字の一部分に適用出来ない。
つまり、出来ないと思う。 >>895
勤務、休み希望を先に選択し残りの空白部分は自動で組めるようにしたいです。 判定や入力もVBAでやってRange.caractors(1,1)から変えればいいじゃん >>904
直接数式の入ったセルに対してやりたいんだろ。 数式の入ったセルにRange.caractors(1,1)で書式変更しても反映されない。 >>903
自動部分のパターンが明確に決まってるなら出来るよ フツーに行単位でセルの色を変えた方が見やすいんじゃないの >>909
自動で勤務の振り分けをしたいんじゃないのか? (ほぼ)リアルタイムに状況見ながら各自が休みとか入れさせるのか、単に休みの希望だけオフラインで集めて、スケジュール担当者だけがシステム触るのかでも難易度が全然違う
今時やるなら前者で行ってもらいたいものだが、仕様考えながら完成まで一ヶ月でできるかも怪しい気がする 先頭の記号一文字分だけ色をつける仕様が糞仕様だと気付くことが必要だよな いやでも実際文字全体をカラーにされると読みづらいから先頭の色付記号だけでアテンション引いてくれる方が見やすくてデザイン性は高いよ 俺はセル内改行された文字列のセル内1行目だけを
フォント大きめで色を付けて強調させるマクロをよくつかう それでも直接文字列でしょ?
IFで選択した文字列に使えないのが雑魚すぎる
VBAマジでアップデートしないかなぁ
今時continueするためにラベル+gotoが必要とかマジでお笑いだわ >>911
そうです。条件に合う勤務表を自動で作成したいです
>>913
オフラインで休み希望等を確認し担当者が入力。あとは、自動作成というのを作りたいです。 >>919
たぶん既に作ってる表は、一ヶ月分が1シートで横方向がその月の日、縦が氏名。その下に☆△等の個数な感じかな。
賢明なら、月初と月末にかかる一週間もそのシートに含めてあるか…(含めてないなら含めておくとプログラミングが楽になる)
対象が何人かわからないけど、条件を満たす候補が何十(百)もあるときどうするのか
そうなるなら、休み希望だけでなく出勤希望も可能とする。そうすると連休よりバラしたい人は休みの前後に出勤希望を入れればいい
プログラム的には、休みや出勤を本人希望か自動設定かを区別しておくこと(見た目でも)
あとは、粛々と仕様のロジックを組み込むだけかな
学校の時間割り作るのと似てるので、そっちで検索すると参考なることあると思う >>919
他には、氏名ごとに日のあとに、2連休有無、各週、月の勤務時間なども出しておきたい
まず作るのは、仕様に合った勤務割り振りになってるかチェックするプログラム
それができていれば、自動割り振りできてなくても手作業で始められるし、できたとこから随時自動化を進めていける
仕様へのリンクメモ >>894 >>918
ある程度仕方無いけど、数式とVBAは混在しない方が良い。 素直に条件書式アイコンセット使った方がいいんじゃね セルにシェイプやフォームを重ねてそっちに色を付ける
別シートに値コピーして、そこに色を付ける 数式列を隠しにして横に値持ってきて色付ければいいんじゃないの?
どうせVBAで色付けるんでしょ? 昨日まで動いていたREPLACE関数が仕事しないんだけどおま環? >経験年数によって行える業務も違うため、どの日も均等に業務ができるように組まなくてはいけない
悩みどころがあるとすればこの均等な業務とやらが明確に決まっているかどうかだな >>933
マクロ無効になってるとか式に問題があるとか 再起動して当該部のマクロ記述しなおしたら直った
原因はようわからんかったが >>937
どういう風に仕事しないのか分からんが、エラーになってデバックでREPLACEが黄色になってるんだったら参照設定が壊れて、基本関数でさえ参照出来なくなる事例かな。
LEFTとかCSTRとか当たり前に使える筈のものが使えなくなった時は一番最初に疑う。 素直にVBAで計算しな。
そしたらTextオブジェクトにもアクセスできる。式の部分文字列には色付けられないって、最初に言ったろ? ワークシート関数で評価した結果をセルに書き込んでから書式変えるのが一番良いよ 勤務表作成のコードが分かりません。
どのセルにどのようなコードを入れればいいですか? >>945
エスパーじゃないので何がどう分からないのかすら分からない
全部分からないってパターンなら正直ここでは解決しないと思う >>946
>>894
>>947
シートを2枚作成し
1枚目(勤務表)
A列に名前
仮に20人所属としA列2行目〜A列21行まで名前を入力
B列〜AFまでに日付
2枚目(参照)
勤務形態
ABC列にそれぞれの勤務形態のグループ(元々仕様では2種だったが、3種必要だった)
A列:昼8、昼12、遅8、夜12
B列:昼8、遅8、夕8、夜8
C列:昼8、遅8、夕8
A列に名前B〜J列10行目にそれぞれの行える業務について
A列の名前を入れ、B〜J列10行目に業務項目を入力し11行目以降にそれぞれの行える業務については○を入力しその情報を元に
勤務表の(B2:AF21)に勤務を表示させたいのですが、(B2:AF21)それぞれにコードを入力すれば良いのでしょうか?
また、どのようなコードを入力すれば良いのですか? CSVからxlsmに一括変換するコードがネットに落ちてない…わかる人いますか? レス数が950を超えています。1000を超えると書き込みができなくなります。