Excel VBA 質問スレ Part62

レス数が1000を超えています。これ以上書き込みはできません。
1
垢版 |
2019/06/24(月) 00:21:37.48
!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
2019/06/24(月) 09:54:51.06ID:pOxYP/iS0
保守
2019/06/24(月) 10:30:40.50ID:/dcVGEspM
>>1
令和初乙
2019/06/24(月) 13:02:31.59ID:H9TPhtT7a
皆さん無知はいいんですよ
誰でも知らないこと、間違って理解してることはあるんだから

だけど知ったような口をきくから叩かれるのですよ
気をつけましょうね
5デフォルトの名無しさん
垢版 |
2019/06/24(月) 15:03:11.87
令和初か
2019/06/24(月) 20:50:58.37ID:zxVE+D4VM
>>4
なんか辛い目にあったのか?
2019/06/25(火) 20:13:59.77ID:YzkEODl+a
ムチでたたかれたいんじゃね
2019/06/26(水) 18:24:48.22ID:0wa1QMM+d
オートフィルターで抽出条件を変数にして繰り返し処理で1ずつ加算していくことは出来ませんか?
下記では出来ませんでした。

For i = 1 to 10
Range("A1").AutoFilter _
Field:=2, Criteria1:="i"
next
2019/06/26(水) 18:55:16.75ID:WMWleXLcr
iの前後にある"は要らないのでは
2019/06/26(水) 21:19:57.14ID:G0xbFDCN0
何故ダブルクォーテーションで括ろうとしたのか全く意味不明。
2019/06/26(水) 21:32:13.70ID:0wa1QMM+d
なるほど!ありがとうございます。最初記録させてそれを元に1つずつやろうと思って、その名残で囲っていました。
助かります!
2019/06/26(水) 23:33:00.96ID:HbMJ8lDB0
中二病みたいな感じにしたらこうかな?

┌→ FoR Z = 1 ─┐
│           └→ 10
│ RANgE("A1").AutoF F = 2, C = Z
│        │
└┐       │
  └ NExT   │
          ↓
          ×
2019/06/27(木) 01:44:52.76ID:wmQpTLu90
面白さを解説してくれ
2019/06/27(木) 04:56:56.51ID:LPdAyFsH0
感じ取れよ・・・
2019/06/27(木) 05:07:29.23ID:qGKhWTNI0
そこはNExTじゃなくてNeXTにしないと
16デフォルトの名無しさん (ワッチョイ d602-/vdH)
垢版 |
2019/06/27(木) 19:55:21.93ID:M8DBqUMl0
VBAができるようになると、xlsmのファイルの中には、普通のワークブック関数って使ったりしないんですか?

例えば、セルの値を別のセルに入れたりとか、if関数とか、簡単なものも
全部 VBAで書いたりするんですか??

それとも混在するんですかね??
2019/06/27(木) 20:02:20.18ID:rZhnxql+0
>>16
マクロでないと出来ないことをするために使うのが普通
2019/06/27(木) 20:02:49.59ID:JZwmukYw0
>>16
処理の内容によって関数の方が良い場合とVBAの方が良い場合がある。
だから内容次第。
混在もあり得る。

でもVBAメインで考えてる時は関数のことは忘れがちで全部VBAにしてしまうことも多い。
あと、自分が組む場合はそもそも関数じゃ無理な処理が多い。
2019/06/27(木) 21:14:07.66ID:8D+6ahzu0
変えられがちなセル関数をリセットするようなのとか
2019/06/27(木) 23:03:15.57ID:It0Wr+rk0
>>16
しない。
VBAが出来るようになると、発想自体が変わるから。
手で数字を入れて、計算式で答えを出す、みたいな使い方にならなくなる。

コマンドボタンを押すと、Webとかデータベースから自動で情報を探してきて、
シートに必要な答えだけを表示するとか、そんな使い方になる。
21デフォルトの名無しさん (ワッチョイ 3e8c-zD22)
垢版 |
2019/06/27(木) 23:08:08.30ID:T3xK78tz0
>>16
ワークシート関数の方が100倍早いからできないことだけVBAを使う
2019/06/27(木) 23:50:13.90ID:It0Wr+rk0
>>21
それは関数とかバージョンによると思うけど・・。
2013のVLOOKUPなら、VBA+SQLの方が何倍も速いし。
23デフォルトの名無しさん (ワッチョイ 3e8c-zD22)
垢版 |
2019/06/27(木) 23:52:45.12ID:T3xK78tz0
超初心者へのアドバイスなんだからザックリでいいんだよ
2019/06/28(金) 00:44:00.93ID:PbHMOvL40
だな

>>16
ワークブック関数ていうものは使ったことないから分からないスマン
2019/06/28(金) 00:52:55.40ID:4xkaC8y70
意味なくマクロ仕込んでるファイルは嫌われるので関数で済むものはなるべくそちらで
2019/06/28(金) 09:16:53.79ID:caJaiAqwM
ワークシート関数でできることはワークシート関数で済ませて
データの差し替えとかそういうところだけVBAを使う
27デフォルトの名無しさん (スプッッ Sdea-mW/F)
垢版 |
2019/06/28(金) 09:29:37.11ID:jtjZs4Dcd
そうすると関数とVBAの2つを覚える必要があるからVBAで出来るならBBAでやるのが簡単
2019/06/28(金) 09:35:04.68ID:IiKC1YBqM
>>26
それってコンセンサスないと思えよ
2019/06/28(金) 09:37:37.70ID:8sFMCkEs0
コンセンサスは無いけど実務上>>26が一番安定するな
2019/06/28(金) 10:08:23.19ID:Ge4DIzuq0
無駄にVBA使われてると「これ作った人承認欲求強いんかな」って思うわ
臨機応変に使い分けできる方がいい
2019/06/28(金) 12:12:11.20ID:8ZSyBqDMa
基本ワークシート使って無理なものはVBAかな

そもそもワークシート使わないならVBAも使わないな
2019/06/28(金) 13:05:33.48ID:Ug9PnKsO0
式が長くなったり作業列がいくつも必要になるような処理はVBAだわ
深いネストとか配列数式とか使うのもいいけど、ワークシート関数だけにこだわると、見通しや保守性が悪くなることもあるし

地味に厄介なのが条件付き書式
これも他人が作ったのを保守すると地獄を見ることになる
2019/06/28(金) 13:39:24.53ID:lRyPlVqwM
保守性で考えると名前の定義が割と曲者
大抵ぶっ壊れてる
2019/06/28(金) 17:29:45.12ID:IiKC1YBqM
>>33
範囲名のこと?
2019/06/28(金) 19:13:18.48ID:7K6czL1cM
>>32
> 地味に厄介なのが条件付き書式
> これも他人が作ったのを保守すると地獄を見ることになる
頑張ってA1:A10に設定したのに次に見たらA1:A3,A4,A5:A7,A8:A9,A10に分割されてたり
マージしろとまでは言わないけど設定した奴を崩すなよ…
2019/06/28(金) 19:24:19.77ID:8sFMCkEs0
コピーペーストすると範囲がぶっ壊れるんだ
2019/06/28(金) 19:30:02.78ID:iRyUn2/nM
条件付き書式が壊れるのは仕様らしいぞ
よって改善される見込みも薄い
2019/06/28(金) 20:30:33.91ID:E4Gg/kBRd
VBAで設定するの追加しとけばOK
2019/06/28(金) 22:15:25.94ID:x+6aVDsg0
関数と条件付き書式は被害者。
これ自体は何も悪くないのに、知らないうちに壊すアホのせいで、
糞みたいに思われてる。
2019/06/28(金) 22:55:25.47ID:3rVPyv1n0
それは仕組みが悪い
人のせいにしてはいかんずら
2019/06/29(土) 00:26:23.28ID:n02ql8lh0
ちょっとニッチな質問失礼します。

バーコードによる品物管理のvbaの検討中です。

バーコードをスキャンした際に、数字に交じって、
グループセパレータ(GS) Asciiコード(0x1d)が出力されるタイプのバーコードを
スキャンした際、文字として存在しない、Ascii 0x1dが入力されたことを検知する術は
何かあるでしょうか。

スキャンしたデータは例えば、0000(0x1d)1234という形でスキャナから飛んできてるはずなのですが、
エクセル上の表記は、当然ながら00001234となってしまいます。

飛んでくる文字のasciiコードを逐一キャッチできれば、0x1dを検知できるかと思うのですが、
vbaでそんなこと可能でしょうか。
2019/06/29(土) 00:30:19.89ID:+e4iLYRh0
>>41
方法は読み取り機ごとに違う
機種によって可能だったり困難だった不可能だったりする
詳細はメーカーに問い合わせるしかない
2019/06/29(土) 00:48:05.66ID:N8jtlPKB0
>>41
どういう形でスキャン結果が来るのか知らんけど、文字列であれば
chr系の関数で一文字ごとに判定してみれば
2019/06/29(土) 01:05:03.58ID:ZIaZJNy10
>ちょっとニッチな質問失礼します。

ここの用途不明の質問に比べたら、
バーコードなんて超普通。
2019/06/29(土) 06:38:14.13ID:e27Fxp8l0
>>41
検知するだけだったら
0< InStr(s, ちゃー(&H1d))
ではダメなの?
2019/06/29(土) 06:44:07.39ID:e27Fxp8l0
Chr が投稿出来ないのか
2019/06/29(土) 07:42:08.89ID:63PqHEX+0
バーコードリーダーを買い換える
二千円くらいであるでしょ
2019/06/29(土) 08:02:50.58ID:pdRWGZY40
おれはUSB-COMでの読取りに挑戦してるけど
なかなかうまくいかないわ
2019/06/29(土) 08:41:34.78ID:ar/F9wgf0
スマホアプリ使ってるな
COGNEXのSCANNERってやつ

>>41
2つに分けたほうが良いと思う
・バーコードスキャン、文字をセルに入力
・入力したセルに対してvbaでfindか何かで検知。changeイベントになると思う
2019/06/29(土) 09:25:17.71ID:xZ6rSaRmM
>>41
隣のセルで数値変換するか
そのセルの形式を数値にするではだめ?
2019/06/29(土) 12:25:05.67ID:/qzOxQgj0
>>49
> 2つに分けたほうが良いと思う
それなんの意味があるんだ?
2019/06/29(土) 12:33:19.42ID:18j8PEbp0
>>30
拡張子が.xlsmだったからどんなコードが書かれてるのかと
エディタ開いて見てみたらModule1, Module2, Module3と並んでて
全部、なんもコード書かれてなく、各SheetやWorkbookにも全くコードが書かれてなかったわ
2019/06/29(土) 12:40:20.18ID:ar/F9wgf0
>>51
入力中の文字を触るのはIMEやらオートコンプリートやらと競合して、あまり良くない
セルの内容を確定させてから、改めて触ったほうが良い
54デフォルトの名無しさん (ワッチョイ 15b3-H8Xf)
垢版 |
2019/06/29(土) 13:46:07.80ID:5z81DYWR0
ここ数週間、入門本とかサイトとか見ながら勉強して、
渾身のコードができたんだけど、誰か批評してくれるかい??


脱初級者になったか見て、アドバイス欲しいんだけど…
2019/06/29(土) 14:03:17.76ID:18j8PEbp0
>>54
半年間そのコードを見ずに放置してから
もう一度そのコードを見てみて何やってるのか
サクッと分かれば脱初級者
2019/06/29(土) 14:03:52.75ID:ar/F9wgf0
>>54
暇だし上げれば見てやるぞ
57デフォルトの名無しさん (ワッチョイ 15b3-H8Xf)
垢版 |
2019/06/29(土) 14:11:28.01ID:5z81DYWR0
>>55
なるほど。。。

>>56
ありがとうございます。
ちょっと長すぎて書き込みエラーになりました

分割して貼ります
58デフォルトの名無しさん (ワッチョイ 15b3-9NVx)
垢版 |
2019/06/29(土) 14:12:40.80ID:5z81DYWR0
お願いします・・・




Option Explicit

Sub 明細書作成()

Dim wsMeisai As Worksheet
Set wsMeisai = worksheets("明細書")

Dim wsData As Worksheet
Set wsData = worksheets("データ")

Dim wsSettei As Worksheet
Set wsSettei = worksheets("設定")



'明細書シートの表の基点
Dim meisaiKiten As Range
Set meisaiKiten = wsMeisai.Range("o8")

'データシートの票の基点
Dim dataKiten As Range
Set dataKiten = wsData.Range("A5")

'設定シートの組合員リストの基点
Dim listKiten As Range
Set listKiten = wsSettei.Range("A3")
59デフォルトの名無しさん (ワッチョイ 15b3-9NVx)
垢版 |
2019/06/29(土) 14:13:34.08ID:5z81DYWR0
'########### 転記 ###########

'明細シートの組合員を定義(オブジェクトじゃないので注意)
Dim kumiaiin As String
kumiaiin = wsMeisai.Cells(7, 3)


'------- 設定シートの組合員リストから検索して正式名を転記 ------

' 検索回数定義
Dim a As Long

For a = 0 To 14

If wsSettei.Cells(listKiten.Row + a, 1) = kumiaiin Then

'ヒットしたものを転記
meisaiKiten.Offset(-4, 0).Value = listKiten.Offset(0 + a, 1).Value & " 御中"

End If

Next a


'------- 請求月の転記 ------

meisaiKiten.Offset(-2, 5).Value = wsMeisai.Cells(15, 3)
60デフォルトの名無しさん (ワッチョイ 15b3-9NVx)
垢版 |
2019/06/29(土) 14:14:27.70ID:5z81DYWR0
'########### 昇順ソート ###########

'データシートの票をソート(アクティブにしないとエラー)
wsData.Activate
wsData.Range(dataKiten, Cells(dataKiten.CurrentRegion.Rows.Count + 1, 6)).Sort _
key1:=dataKiten, _
order1:=xlAscending
wsMeisai.Activate
61デフォルトの名無しさん (ワッチョイ 15b3-9NVx)
垢版 |
2019/06/29(土) 14:15:48.93ID:5z81DYWR0
'############ 検索 #############

'明細書の票をクリア
wsMeisai.Range(meisaiKiten, meisaiKiten.Offset(30, 5)).ClearContents

'明細書の票の行数定義
Dim meisaiRow As Long
meisaiRow = 0

'検索回数を定義
Dim i As Long

For i = 0 To dataKiten.CurrentRegion.Rows.Count - 2




'--------日付での検索--------

Dim firstDate As Date
Dim lastDate As Date

firstDate = wsMeisai.Cells(13, 3)
lastDate = wsMeisai.Cells(15, 3)

If wsData.Cells(dataKiten.Row + i, 1) >= firstDate And wsData.Cells(dataKiten.Row + i, 1) <= lastDate Then
62デフォルトの名無しさん (ワッチョイ 15b3-9NVx)
垢版 |
2019/06/29(土) 14:16:14.86ID:5z81DYWR0
'---------組合員名で検索---------

If wsData.Cells(dataKiten.Row + i, dataKiten.Column + 4) = kumiaiin Then

'ヒットしたものを転記
meisaiKiten.Offset(meisaiRow, 0).Value = Month(dataKiten.Offset(0 + i, 0).Value)
meisaiKiten.Offset(meisaiRow, 1).Value = Day(dataKiten.Offset(0 + i, 0).Value)
meisaiKiten.Offset(meisaiRow, 2).Value = dataKiten.Offset(0 + i, 1).Value
meisaiKiten.Offset(meisaiRow, 3).Value = dataKiten.Offset(0 + i, 2).Value
meisaiKiten.Offset(meisaiRow, 4).Value = dataKiten.Offset(0 + i, 3).Value
meisaiKiten.Offset(meisaiRow, 5).Value = dataKiten.Offset(0 + i, 5).Value

meisaiRow = meisaiRow + 1

End If

End If

Next i

End Sub
63デフォルトの名無しさん (ワッチョイ 15b3-H8Xf)
垢版 |
2019/06/29(土) 14:18:49.64ID:5z81DYWR0
すみません。
ちょっと長いんですが、よろしくお願いします!

なんか2chに貼るとインデントが消えました...
2019/06/29(土) 14:24:50.65ID:/qzOxQgj0
>>53
セルに入れてわざわざイベントでやるというのが意味不明
VBAでやるなら普通に変数に入れればいいだけだろ
2019/06/29(土) 14:44:03.18ID:ar/F9wgf0
>>63
・無駄な改行が多すぎる
・この長さならfunction分けたほうが良いかも知れない。まぁvbaならどっちでもいいけどな
https://i.imgur.com/KicuV2d.png

>>64
それが出来ればそれでokだけど、
スキャンした文字列をvbaで受ける方法が良く分からない
2019/06/29(土) 14:44:48.19ID:ar/F9wgf0
>>63
一応だけど、コードはこのままだと動かないぞ
こういう感じで書くと見やすくなるってだけ
2019/06/29(土) 15:02:51.58ID:/qzOxQgj0
>>65
> スキャンした文字列をvbaで受ける方法が良く分からない
>>42
2019/06/29(土) 15:05:49.45ID:ar/F9wgf0
>>67
だろ、だからその方法は回答できない
2019/06/29(土) 15:11:19.63ID:5z81DYWR0
>>65
ありがとうございます!
なんか見やすいです。

ちょっと自分のをいじくってみます!
2019/06/29(土) 15:41:41.08ID:/qzOxQgj0
>>68
回答もできないのに
> 入力中の文字を触るのはIMEやらオートコンプリートやらと競合して、あまり良くない
とか言ってたのかよw
2019/06/29(土) 16:13:20.28ID:N8jtlPKB0
組み込みのソート機能ってアクティブにしないとエラーになるのか…
知らんかった
2019/06/29(土) 16:44:47.42ID:ZIaZJNy10
>>66
だよな。
プロシージャ内で宣言したものを、
プロシージャ外で使う方法があるのかと思って、ビックリしたわ。
2019/06/29(土) 16:52:28.77ID:5z81DYWR0
ということは、dimしてる行を全部外に出せば良いのですかね?

今いじくっているんですが、俺のレベルでいじくると、動かなくなりそうでコワイ...
2019/06/29(土) 17:03:34.38ID:ar/F9wgf0
>>70
そんなに面白いの?

>>73
まぁメインはできるだけシンプルにして、各ルーチンを外に出せば、
この先処理が増えてもメンテが楽って事
今から書き直すのは大変だからやらないほうが良い。そこに意味はあまり無い
2019/06/29(土) 17:06:01.70ID:ZIaZJNy10
>>73
いや、全部じゃなく、複数のプロシージャで使うものだけね。
あと、「脱初心者」ってことなら、1セルずつ処理するのではなく、
配列に入れてからの方がいい。
あとは、ループで探すんじゃなくて、
アドバンスドフィルタで一気に取り出して、後から書式を加工するとか。
2019/06/29(土) 17:07:58.76ID:ZIaZJNy10
↑理由を書いてなかった。
1セルずつだと、件数が多くなってきた時に遅いから。
2019/06/29(土) 17:19:17.27ID:gH+06y00M
>>74
> そんなに面白いの?
知ったかをバカにしてるだけ
あと今時グローバル変数を勧めるなよ…
2019/06/29(土) 17:26:34.94ID:5z81DYWR0
>>74
わかりました。別のを作るときの課題にします!

>>75

1、あと、「脱初心者」ってことなら、1セルずつ処理するのではなく、
配列に入れてからの方がいい。

2、あとは、ループで探すんじゃなくて、
アドバンスドフィルタで一気に取り出して、後から書式を加工するとか。

この2点、今の俺には知識がなく、どんな処理になるのかイメージがわかないので、ちょっと勉強します!




お二方、アドバイスありがとうございました!
プログラミング、スゲーおもろいです。
79デフォルトの名無しさん (スプッッ Sdea-mW/F)
垢版 |
2019/06/29(土) 17:54:48.66ID:Xi6piOZFd
これからプログラムを勉強する人への最大のアドバイスはVBAなんか辞めとけ
2019/06/29(土) 18:05:49.76ID:18j8PEbp0
>>78
1は>>76にもあるが処理速度の問題

状況によってはとてつもなく遅くなる
2019/06/29(土) 18:09:20.82ID:kjDvto4M0
>>65
一般的に多いキーボ−ドインターフェースの場合、スキャンしたものを取り込むのは難しいぞ。
多分、ここにいる人達じゃ無理だと思う。
キーボ−ドフックのコードが書けるかどうかだね。
シリアルの場合は簡単だけど。

セル内の文字列に1Dが含まれている可能性が高いからスキャンした文字を受ける必要は無いと思う。
それに面倒なキ−ボードフックのコードを書く前にセル内の文字列に含まれているかを確認する方が先だ。
2019/06/29(土) 18:13:35.79ID:ar/F9wgf0
キーボ−ド
キ−ボード

何故
2019/06/29(土) 19:09:07.06ID:/qzOxQgj0
キーボードフック知ってる俺すげー君登場ww
2019/06/29(土) 19:41:33.03ID:ar/F9wgf0
>>83
普通の知識だよ
グローバルフックって言う方が通りが良い気はするけど
2019/06/29(土) 19:43:24.23ID:e27Fxp8l0
キーボードI/Fと同じと見なせるって前提なの?
2019/06/29(土) 19:46:43.38ID:ar/F9wgf0
>>85
それが分かっていないから答えようがない
2019/06/29(土) 20:26:23.63ID:/qzOxQgj0
>>84
>>81によると
> 多分、ここにいる人達じゃ無理だと思う。
らしいよww
まさかと思うけど揶揄してることはわかってるよね?
2019/06/29(土) 20:51:15.86ID:ar/F9wgf0
>>87
どうでもいいかな
回答もできない無能に自覚してほしいだけで
2019/06/29(土) 21:25:03.11ID:vxyvFN0Jd
キーボードをフックしていいのは昭和時代まで
Windowsではイベントハンドラを作るんだよ
2019/06/29(土) 21:36:58.96ID:MS4qvDfW0
>>58
このコードはシートに書いてるのかモジュールに書いてるのかどっち?
2019/06/29(土) 21:54:17.62ID:N8jtlPKB0
なぜ突然キーボードフックが出てくるんだ…
まさかバーコードスキャナーが出力ををVKほにゃららで送ってくるのか?
そんな変態デバイスあんの?
2019/06/29(土) 21:58:47.78ID:/qzOxQgj0
> 回答もできない無能に自覚してほしいだけで
昭和脳の渾身の回答w
・グローバル変数
・グローバルフック
マジで邪魔でしかないな
2019/06/29(土) 22:02:35.51ID:ar/F9wgf0
>>92
煽るならもうちょっと真面目にやってくれ、他人のレスの寄せ集めじゃないか
全然ダメージないぞ、画面の向こうの相手を殺す気でやれ
2019/06/29(土) 22:14:26.77ID:ZIaZJNy10
>マジで邪魔でしかないな

お前が言うな。
qzOxQgj0で検索したら、役に立つ情報1つも書いてないじゃないか。
そういうのを邪魔というんじゃないか?
2019/06/29(土) 22:16:55.30ID:kjDvto4M0
スキャンした文字列をVBAで受けるのが分からないと書いてたから、それは難しいぞと返しただけなんだが。
難しいのさえ知らなかった人達が多いんだからな。
そりゃ、ここじゃ無理だろ。

だからまず問題のスキャナから入力されたセルの値に1Dが入ってるかをまず確認してほしいんだがね。
2019/06/29(土) 22:20:10.77ID:kjDvto4M0
>>91
バーコードスキャナは全然違うものを送って来るよな。
キーボードの仕組みを知っている人は少ない。
VBA関係なく世間一般にプログラマーと呼ばれる人達においても。

メイクコード、ブレイクコードとかコマンドとかね。
2019/06/29(土) 22:40:36.99ID:/qzOxQgj0
>>93
> 全然ダメージないぞ、画面の向こうの相手を殺す気でやれ
自覚がないとか最悪だな
まあ自覚あったら回線切って二度と出てこれないわな

>>94
> qzOxQgj0で検索したら、役に立つ情報1つも書いてないじゃないか。
害悪な情報ドヤるよりマシだろw
まさかグローバル変数を勧めるのが役立つ情報とか言わないよな?
2019/06/29(土) 22:44:45.88ID:kjDvto4M0
>>97
お前は自分が誰に向かって話してるのかも分からんのか?
滑稽だなあ。
2019/06/29(土) 23:08:30.19ID:/qzOxQgj0
キーボードフック知ってる俺すげー君乙w
2019/06/29(土) 23:10:28.18ID:fsuk4DhmM
>ID:/qzOxQgj0
なんでそんなに必死なの?
2019/06/29(土) 23:16:47.41ID:BltrkNQAa
みなさん知識マウント楽しそうで何よりです^_^
2019/06/30(日) 00:26:31.94ID:n0xlNYZz0
ケチつけ連投するしか能がない真正バカ小原のことはほっときなさい
2019/06/30(日) 01:02:24.89ID:V9f3dG8f0
>>97
誰もグローバル変数なんか勧めてないが。
2019/06/30(日) 01:54:36.89ID:C4oDmko00
>>103
入門本とか見てるやつに>>65みたいなコード示したらグローバル変数勧めてるようなもんだろ
事実>>73はそうしろと言われてると思ってるし
2019/06/30(日) 06:26:13.81ID:cq9JZECt0
>>104
ExcelVBAはworkbookを中心にスクリプトを組むので、
実はグローバル変数のデメリットがあまりない
開発が1人なら尚更
1000行ぐらいのコードなら、さっさとグロ−バルでもなんでも使ってスクリプトを組んだ方が良い
2019/06/30(日) 06:48:56.62ID:u2RU81MRd
このスレに、あきらかにプログラミング経験のかなり乏しいやつが紛れ込んでるな
キーボード操作に熟達してれば、普通はマイナスと長音を間違えたり混在させたりしない
2019/06/30(日) 07:44:09.12ID:tWAcAnUK0
>>106
「質問スレ」だからかと。
2019/06/30(日) 07:58:09.00ID:C4oDmko00
>>105
ガチの基地外かよ…
2019/06/30(日) 08:00:39.13ID:cq9JZECt0
>>108
他人のレスが無いと何も反論できなくて草
2019/06/30(日) 08:58:22.39ID:BCL4JXQnM
>>106に指摘されてるのにこれ以上何を言うことがあるんだよ…
質問スレとか関係ないだろ
「グロ−バル」なんてどうやって入力してるんだよww
2019/06/30(日) 09:07:37.54ID:cq9JZECt0
>>110
誰の事だよって俺の事か
>>81も変なタイプミスしてるなーと思ってたけど、多分今、googleIMEの変換がおかしくなっている
あまり気にするな、俺も気にしない
2019/06/30(日) 09:37:19.87ID:VDp+hLNV0
なんだ、長音とマイナスってそういう意味か。
くだらねえ。

俺はスマホで手書き入力使ってるんだよ。
VBAと何の関係が有るんだ?
馬鹿馬鹿しい。
2019/06/30(日) 09:37:37.48ID:C4oDmko00
そういうところに無頓着なのは>>106の言う通りプログラムの経験なさすぎ
そんなレベルで
> 暇だし上げれば見てやるぞ
とか頭おかしい
で、結論が
> ExcelVBAはworkbookを中心にスクリプトを組むので、
> 実はグローバル変数のデメリットがあまりない
とかww
マジでちょっとは自覚した方がいいぞ
2019/06/30(日) 09:39:38.61ID:cq9JZECt0
>>113
具体的にどう問題があるの?
2019/06/30(日) 09:40:14.19ID:cq9JZECt0
自分で考える力がないから〜♪
他の人が指摘するまで〜♪
突っ込む事ができない〜♪♪
2019/06/30(日) 09:42:20.76ID:VDp+hLNV0
>>104
どこをどう見たら>>65がグローバル変数を勧めることになるんだ?
>>73が初心者で理解出来て無いだけじゃねーか。

>>65を見てグローバル変数を勧めてると思うのはよっぽどの初心者だぞ。
引数って知らないか?
2019/06/30(日) 09:46:09.67ID:VDp+hLNV0
>>113
だから、お前は誰と勘違いしてるんだ?
それに、無頓着とプログラミング全く関係ないがwww

自分のレベルの低さを誤魔化そうとするな。
発言からレベルの低さは滲み出てるから誤魔化そうとしても無駄。
2019/06/30(日) 09:50:33.52ID:VDp+hLNV0
あと、言っとくがキーボード操作とプログラミングの関係も分かってない。
ギーボード操作が上手くないプログラマーなんていくらでもいるぞ。
2019/06/30(日) 10:04:37.76ID:C4oDmko00
>>114
ここでグローバル変数の弊害を説明しろと?
マジで言ってるならちょっとググってこいよ…

>>116
だから入門書とか見てる奴に引数もちゃんと書いてないコード示すなよって話な
VBAスレだと引数知らない奴がいても不思議じゃないし

>>117
はいはい、キーボードフック書ける君は凄いよ
これで満足かなw
2019/06/30(日) 10:06:16.75ID:C4oDmko00
>>118
誰もキーボード操作の話なんてしてないよ
作った文章なりコードに無頓着かどうかの話
そういう違いもわからない時点で…w
2019/06/30(日) 10:07:18.76ID:cq9JZECt0
>>119
早く誰か助けてくれると良いね
2019/06/30(日) 10:12:06.59ID:cq9JZECt0
>>116で「引数」という単語が出てからようやく>>119で「引数」使ってて草
幾ら何でも自分に自信なさすぎだろう
2019/06/30(日) 10:16:09.20ID:VDp+hLNV0
>>120
元々の>>106はキーボード操作の話じゃね―か。
そしてお前は>>106の言う通りと書いてる。

お子様かよ。
2019/06/30(日) 10:17:02.68ID:VDp+hLNV0
>>122
というか、俺に言われて調べ始めたに一票www
2019/06/30(日) 10:42:16.40ID:C4oDmko00
>>122
あのさあ、グローバル変数ガーって指摘してたら引数で渡してない事を言ってることぐらいはわかるだろ…
そんなところまでいちいち指摘するしかない所まで追い詰められてるのか?w
2019/06/30(日) 10:45:54.68ID:cq9JZECt0
>>125
新しい単語増えなくて草
2019/06/30(日) 10:47:01.98ID:C4oDmko00
>>123
> そしてお前は>>106の言う通りと書いてる。
ああすまん
> 誰もキーボード操作の話なんてしてないよ
これは間違いだな
ただ「>>106の言う通り」は「あきらかにプログラミング経験のかなり乏しいやつ」のことな
2019/06/30(日) 10:48:05.76ID:cq9JZECt0
>>127
やっぱり人の使った文章しか使えなくて草
2019/06/30(日) 10:48:32.85ID:C4oDmko00
>>126
増やす必要あるの?w
2019/06/30(日) 10:50:26.49ID:C4oDmko00
>>128
で?
人の使った文章かどうかに関わらずグローバル変数を勧めるのが害悪なことには変わりないだろ
まあもう引っ込みつかなくなって話そらそうと必死なのはわかるけどさww
2019/06/30(日) 10:51:14.71ID:cq9JZECt0
>>129
話題を広げられない、人の引用しか出来ない
これでは君が発言する必要が無いね
個人的には生きてる価値もないと思う
2019/06/30(日) 10:55:57.45ID:VDp+hLNV0
>>130
そもそも>>125が嘘だろ。
>>116で初めて知ったのにwww
2019/06/30(日) 11:01:19.47ID:VDp+hLNV0
>>127
>>117に書いた通り。
無頓着とプログラミングも全く関係ないわけだが。
反論するなら>>117についての反論も言わないと全く意味がないわけだが。
134デフォルトの名無しさん (ワッチョイ 2d94-mW/F)
垢版 |
2019/06/30(日) 11:06:21.97ID:tuHSj4I20
VBAはエクセル専用用途だから意味があるんじゃないの?
エクセル以外なら他言語推奨
2019/06/30(日) 11:23:27.08ID:e1gn7el30
WordとかAccessとかPowerPointとか他のMicrosoft製品にもある(実際Wordで使ってる)
2019/06/30(日) 11:29:28.98ID:C4oDmko00
>>132
引数わかってないのにグローバル変数云々が言えるとでも思ってるのかよ…
どういう理論なんだよw

>>133
はいはい、そうだね
別にそこは議論の主眼じゃないから君の言う通りでいいよ
2019/06/30(日) 11:30:23.41ID:C4oDmko00
>>131
> 話題を広げられない、人の引用しか出来ない
> これでは君が発言する必要が無いね
> 個人的には生きてる価値もないと思う
ブーメランすぎるww
2019/06/30(日) 11:32:08.40ID:C4oDmko00
>>135
Outlookにもあるよ、使ってるし
Accessはそれ自体をあまり使わないからVBAも使ったことないな
2019/06/30(日) 11:33:36.95ID:/mKHwNLn0
業務にも依るんだろうけど、Excelについで使うのはAccessだな
パワポでも使えるのは知らんかった
2019/06/30(日) 11:33:50.38ID:AnNEp6C40
ca01をNGに突っ込んだら
当面このガイジは見えなくなるよ
2019/06/30(日) 11:43:50.56ID:e1gn7el30
>>138-139
挙げるとキリが無いから省いたが、ほとんどのMicrosoft Office製品に入ってると思っていい
(PublisherとかProjectとかVisioとかそういうの)
ちなみにWordで組んだのは文脈から漢数字だけを判別して半角英数字に置換したり段落書式を設定したりアウトラインとかインデントを付けたりとかそういうの
話が脱線するのでこの辺で
2019/06/30(日) 12:03:52.32ID:C4oDmko00
>>140
一人でNGしとけばいいのにいちいち報告とかw
2019/06/30(日) 12:22:24.26ID:gq8hO7PC0
俺、初心者だけど、C4oDmko00が劣勢なのはすごい分かる

イチャモン付けてケンカ吹っかけたけど、
相手が強すぎて、返り討ちにあって逃げてるチンピラみたい

かわいそう。。。
2019/06/30(日) 12:57:47.77ID:EXtY/AkpM
>>143
> 俺、初心者だけど、C4oDmko00が劣勢なのはすごい分かる
どこを見てどういう理由でそう思ったのかな?
具体的に書いてみ
2019/06/30(日) 13:13:15.44ID:5t+h7ySdx
今北産業
2019/06/30(日) 13:26:23.09ID:VDp+hLNV0
>>136
???
またおかしなこと言い出したぞwww

引数取らないプロシージャ並べて呼び出す時にグローバル変数で連携しようとするのを批判してるんだろ。
引数知らなくても批判出来るし、知ってたら一番先に引数について言及する筈なんだけどwww
2019/06/30(日) 13:27:55.31ID:VDp+hLNV0
>>143
ID変えてご苦労様。
このスレでよく見かけるからバレバレ。
ついでに口調もそっくりwww
2019/06/30(日) 13:30:15.60ID:VDp+hLNV0
あれ、ca01とか書いてたから勘違いしたぞ。
2019/06/30(日) 13:46:54.84ID:5t+h7ySdx
グローバル変数を批判する奴ってセル値でのステータス値管理も批判するのかな
危険性はあまり変わらないんだけど
2019/06/30(日) 13:47:27.79ID:Dis52az6M
>>145
以下をNGにしとけばOK。
ワッチョイ ca01-BSeC
ワッチョイ fe68-bYGp
ワッチョイ a991-afcP
2019/06/30(日) 13:52:45.81ID:e1gn7el30
>>145
>>65でID:ar/F9wgf0がプロシージャを分けると見やすいと例示した動かないコード
それを見たID:C4oDmko00がなぜかグローバル変数の使用を推奨していると勘違い
グローバル変数以外にも引数で渡すこともできるし、もっと他の方法もあるのになぜか「お前グローバル変数推奨したやろ」の一本槍で糾弾


ちなみに>>65をぱっと見ただけで俺が思いついたのは:
・モジュールレベル定数(Private Const)を使う。
・モジュールレベル変数(Private)を使う。
・必要な変数のみを引数としてプロシージャに渡す。
・自作クラスを作る。
スキルが低い俺でもこんだけ色々な選択肢があるなーと思うわけだが、どれを選択するかは書く人の自由で、
「これをどう動かすかは自分で考えろ」というだけのことだろう。


余談だが、俺はグローバル変数=パブリック変数(Publicステートメントで宣言する変数)だと思ってた。
2019/06/30(日) 14:12:21.85ID:C4oDmko00
>>146
引数知らない奴がどう批判するんだろう…
どんどん意味不明になってるぞw

>>147
必死すぎ、顔真っ赤だろ
ちょっと落ち着けば自分がどんだけアホなこと言ってるかわかるだろうけど…
2019/06/30(日) 14:14:35.59ID:/mKHwNLn0
正直VBAでするお仕事の規模でグローバル変数とか気にしてもしょうがないぞ
2019/06/30(日) 14:15:03.88ID:C4oDmko00
>>149
ステータス管理の内容によるだろ
その状態を次回まで引継ぐとかならセルでやるしそうでないなら変数でいいと思う
セルは通常のプログラムで言うストレージに近い
2019/06/30(日) 14:16:35.06ID:gq8hO7PC0
俺がここ(>>65)で教えてもらったのは、色々な書き方があるって事で、絶対こう書けってことは言われてないぜ。
俺が脱初級者になる為の一つのヒントをもらっただけで、俺の技量が上がれば、何が最適か自分で判断するよ。


凄腕の人が、ヒントやキーワードを無料で教えてくれてるだけで、ホント感謝だわ。
2019/06/30(日) 14:19:10.48ID:C4oDmko00
>>151
スコープの話にしようとしてる?
まあどんな方法を取るかはプログラマー次第だけど、今時グローバル変数/モジュール変数はなぁっていうだけの話
あと自作クラスを作るのはいいけどそのインスタンスはどうやって持つつもり?
2019/06/30(日) 14:39:05.01ID:y5K6zYFc0
>>156
流れと関係ないけど、「グローバル変数を使うのはやめてクラス化しましょう」
みたいな意味不明な主張はわりと見る。
2019/06/30(日) 14:41:17.22ID:y5K6zYFc0
>>149
・そのステータスがUIの一部でもある
・プログラムが終了しても値をセーブしておきたい
場合なら許容できるかな
2019/06/30(日) 14:47:59.50ID:vn2320T90
あとからメンテさせられた時大変なのでVBAかどうかではなく構成によって使い方を考慮してもらえるとありがたいです
2019/06/30(日) 14:50:22.38ID:C4oDmko00
>>157
あれなんなんだろうね
なんか異様なクラス信仰でもあるんだろうかw
2019/06/30(日) 14:55:17.57ID:VDp+hLNV0
>>152
何故引数を知らないと批判出来ないんだ?
バカ過ぎだろ。

お前のような初心者はプロシージャを分けるという発想が無い。
引数を知らないからプロシージャを分けたら連携するためにはグローバル変数を使うしか無いと思ってたんだろ。
バレバレだ。
2019/06/30(日) 14:56:21.14ID:VDp+hLNV0
>>156
その批判もピント外れ。
今時とか関係ないからwww
2019/06/30(日) 15:00:07.08ID:VDp+hLNV0
>>156
「今時なあ」は君の意見じゃないのか。
何か、最初の勘違いから変に君とおかしな奴のIDを間違えるようになっちまった。
2019/06/30(日) 15:01:36.30ID:VDp+hLNV0
マジでIDが分からなくなってるな。
2019/06/30(日) 15:27:25.40ID:C4oDmko00
必死の連投w
ちょっと頭冷やせばいいのに…
2019/06/30(日) 15:29:48.78ID:VDp+hLNV0
どっちにしても引数知らなくてもグローバル変数批判は出来るし、実際批判したじゃないか。
2019/06/30(日) 16:01:59.12ID:C4oDmko00
マジで言ってるのか…

>>73
> ということは、dimしてる行を全部外に出せば良いのですかね?

これはグローバル変数を使うことを示唆してる
それに対して>>74が何も言ってないから指摘したの、わかる?

ちなみにいま読み返したら
>>75
> いや、全部じゃなく、複数のプロシージャで使うものだけね。
と、もっと直接的に言ってるアホがいたわ
しかもそいつは
>>103
> 誰もグローバル変数なんか勧めてないが。
とか言ってるしww
2019/06/30(日) 16:30:49.40ID:Pna16KLyx
>>150
>>151
サンガツ
よく状況が分かったよ
他人を馬鹿にしたいだけ人っているよね
初心者から抜け出せないタイプだと思うわ
2019/06/30(日) 16:32:22.11ID:C4oDmko00
> 他人を馬鹿にしたいだけ人っているよね
> 初心者から抜け出せないタイプだと思うわ
ブーメラン乙w
2019/06/30(日) 16:37:19.69ID:Pna16KLyx
ちなみにグローバル変数絶対反対っていう風潮って古いよね
ローカル変数を多用した状態管理って保守運用のフェーズでは多重階層化の弊害を招きかねないから変数スコープの制限はケースバイケースでしょ
2019/06/30(日) 16:40:56.82ID:Pna16KLyx
>>169
どこがブーメランなんだ?
俺は他人を馬鹿にしたい "だけ" の人間ではないし、初心者でもないんだが
馬鹿を馬鹿にするのは楽しいけどな
2019/06/30(日) 16:53:27.63ID:VDp+hLNV0
>>167
だからそれは引数を知らなくても出来るし、実際知らなかったろ。
引数を知っていた筈という話には全く繋がっていない。
2019/06/30(日) 17:37:14.13ID:C4oDmko00
「自称」非初心者がなぜか
> ローカル変数を多用した状態管理
とか頓珍漢な事を言い出したぞw
なぜわざわざ墓穴を掘りに来るんだ…
2019/06/30(日) 17:44:20.92ID:C4oDmko00
>>172
まだ言ってるのかよ…
お前がどう思おうと客観的な根拠もないことを何度繰り返しても真実にはならんよ
真実は
>>65を見た>>73がグローバル変数で情報の受け渡しをすると思った
だけな
2019/06/30(日) 18:31:31.13ID:gq8hO7PC0
>>65で教えてもらっただけで、そんなこと全く思ってないけど??
勝手に何言ってんだ??
2019/06/30(日) 18:41:44.46ID:/mKHwNLn0
喧嘩のダシにしたいだけだからほっとけ
2019/06/30(日) 18:47:19.24ID:C4oDmko00
>>175
お前が誰かは知らんけど
>>73
> ということは、dimしてる行を全部外に出せば良いのですかね?
って書いてるからな
2019/06/30(日) 18:52:36.45ID:V9f3dG8f0
>>104
全部出していいかと聞かれたから、全部は出すなと言っただけだろうが。
それのどこが推奨してることになるんだ?
もし推奨するなら、全部出せって言うわ。
2019/06/30(日) 18:54:13.05ID:gq8hO7PC0
それは俺なんだわ

ただ
>>65を見た>>73がグローバル変数で情報の受け渡しをすると思った

これは全然違う



おまえ、ここで親切に教えてくれてる人に不快な思いをさせるなよ
2019/06/30(日) 18:57:02.48ID:gq8hO7PC0
>>179 = >>73
2019/06/30(日) 19:04:25.26ID:cq9JZECt0
飲みに行って帰って来たらまだやってて笑ったw

>>177
一日中不毛な言い争いしてて受けるw
生きてる意味ねーw
2019/06/30(日) 19:13:52.15ID:iNixG7Sv0
このキッズは全方位敵なん?
2019/06/30(日) 19:14:25.43ID:C4oDmko00
>>178-179
なら
> ということは、dimしてる行を全部外に出せば良いのですかね?
の意味を説明してみ
2019/06/30(日) 19:16:23.51ID:gq8hO7PC0
>>183
なんで??
2019/06/30(日) 19:18:46.02ID:C4oDmko00
>>181
> 生きてる意味ねーw
もうそう言う事しか言えないんだな…
2019/06/30(日) 19:19:59.40ID:C4oDmko00
>>184
ああ、説明できないなら無理に説明しなくてもいいよ
2019/06/30(日) 19:21:46.32ID:C4oDmko00
>>178
> いや、全部じゃなく、複数のプロシージャで使うものだけね。
なんのためにこんなことが必要なんだろうねw
2019/06/30(日) 19:23:40.23ID:gq8hO7PC0
>>186
じゃあ言うなよ
2019/06/30(日) 19:34:27.26ID:V9f3dG8f0
>>185
生きてる意味ないのは本当だろう。
リアル社会でどんだけクズなのか知らんが、
こんなネット掲示板ですら何の役にも立たず、荒らすだけの存在なんて。
2019/06/30(日) 19:44:36.48ID:VDp+hLNV0
>>187
全然反論になっていない。
グローバル変数を勘違いしようがしまいが、お前が引数を知らないで、プロシージャを分けるとグローバル変数を使用するしか無くなるという頓珍漢な批判したことは変わらない。
2019/06/30(日) 19:46:49.51ID:C4oDmko00
>>188
ああ、すまん
そこまで困ってるとは思わなかったよww
2019/06/30(日) 19:47:37.07ID:C4oDmko00
>>189
自己紹介乙w
2019/06/30(日) 19:51:16.51ID:C4oDmko00
>>190
俺がどう批判したかなんて関係ないよ
>>75
> 複数のプロシージャで使うものだけね。
って言った事実は消えないってだけ
可能ならその意図を説明して欲しいが、まあ無理でしょ?w
2019/06/30(日) 19:57:00.90ID:gq8hO7PC0
>>191
なんでお前に説明せなあかんねんって事なんだが、
なにひとりで納得してんの??
気持ちわりー
2019/06/30(日) 19:58:39.30ID:V9f3dG8f0
>>193
ローカルとグローバルを使い分けるという意味だが。
ローカル教のお前は理解できんだろうが。
2019/06/30(日) 20:08:38.94ID:VDp+hLNV0
>>193
>>75は全くその通りだが。
何がおかしいんだ?
2019/06/30(日) 20:10:28.82ID:VDp+hLNV0
>>195
ああ、そういう意味で>>193は批判してたのか。
うん、使い分けるという意味だよなあ。

逆に>>193が何を言ってるのか分からんかったよ。
2019/06/30(日) 20:10:54.63ID:C4oDmko00
>>195
は?
> 複数のプロシージャで使うものだけね。
なのにローカル?
使い分けるってことはグローバルも使うってことだよね?
まあ>>194みたいな結論になる前に黙ったほうがいいと思うよw
2019/06/30(日) 20:13:10.39ID:VDp+hLNV0
>>198
えっ、お前ってグローバルは少しも使っちゃいけないって意見だったの?
一体、どこの初心者だよw
2019/06/30(日) 20:20:42.07ID:V9f3dG8f0
>>198
何でお前はそんなに俺がグローバルを推奨してるってことにしたいんだ?
もう一度言うが、外に出して良いかと聞かれたから、
外に出して使うケースを書いただけだぞ。
2019/06/30(日) 20:25:27.71ID:gq8hO7PC0
結局これは何だったんだ?

>>65を見た>>73がグローバル変数で情報の受け渡しをすると思った

こいつは俺の思考を勝手に解釈して、間違って恥かいてたの??
2019/06/30(日) 20:34:43.47ID:gq8hO7PC0
ID:C4oDmko00 はもう人に迷惑かけるんじゃねーぞ

今流行りの犯罪者になっちゃうぞ
2019/06/30(日) 20:34:46.48ID:C4oDmko00
>>199
必要なら使う
必要ないなら使わない
せっかく>>65みたいに機能分割したんならグローバル変数なんて必要ないでしょ
って言うだけの話

>>200-201
もうお前らいいからw
2019/06/30(日) 20:44:31.53ID:V9f3dG8f0
>>203
>もうお前らいいからw

人に聞いておいて、何だその言い草は。
お前マジで人間終わってるよ。生きてて良いレベルじゃない。
2019/06/30(日) 20:47:56.97ID:VDp+hLNV0
>>203
はい?
何言ってんだ?

機能分割とグローバル変数は関係ないぞ。
アプリ全体で使いたければグローバル変数にするだろ。
プロシージャを何個もまたぐのに、それだけの為に全部引数で渡すのか?

プロシージャに分けるのは汎用化、独立性の為で、その為にグローバル変数じゃなく引数にするということはある。
しかし、アプリ全体を通して使いたいものは、グローバルで問題無いぞ。
2019/06/30(日) 21:17:09.76ID:C4oDmko00
>>204
> 外に出して使うケースを書いただけだぞ。
だからそれはなんのためにやるんだ?
って聞いてるのにローカルがどうのこう言われてもねぇ…
重ねて言うけど外に出さないケースなんて聞いてないから
2019/06/30(日) 21:22:26.04ID:V9f3dG8f0
>>206
もういいってお前が言ったんだぞ。
いい加減にしろ。
2019/06/30(日) 21:24:49.36ID:V9f3dG8f0
俺はもう降りる。

いいか?
間違っても、犯罪起こして、ネットでバカにされたせい、
全部こいつらが悪いとか言うんじゃないぞ。
2019/06/30(日) 21:26:36.15ID:C4oDmko00
>>205
例えばログ用のインスタンスとかならあるだろうな
でも>>65みたいなケースはちがうでしょ?
具体的に言えば例えばkumiaiinっていう変数は「転記」と「検索」でしか使ってないのにグローバル変数にするの?
って話ね
2019/06/30(日) 21:28:41.32ID:C4oDmko00
>>207-208
相手して欲しいのかして欲しくないのかどっちだよw
むしろ危ないのはイライラしてるお前じゃね?
2019/06/30(日) 22:01:39.30ID:Pna16KLyx
ワークブックとかシートとかのExcelオブジェクトでPublic変数を定義する場合と標準モジュールでPublic変数を定義する場合とでは挙動が違うっていう点も大事だと思うんだよな
2019/06/30(日) 22:22:52.22ID:cq9JZECt0
飲み直したらまだやっててワロタw
その人生楽しいの?w
2019/06/30(日) 22:24:39.11ID:cq9JZECt0
明日も仕事だしさっさと寝るわw
何の意味もない煽りあい頑張って~
バイバ〜イ
2019/06/30(日) 22:34:33.38ID:/mKHwNLn0
貴重な土日の休みを5chのレスバで消耗するとか悲しすぎるだろ
2019/06/30(日) 22:36:45.08ID:C4oDmko00
そのまま寝ればいいのに構ってちゃんかよw
2019/07/01(月) 17:35:52.04ID:cYPcOUYxM
争いは同じレベルのもの同士でんでん
2019/07/08(月) 12:55:08.17ID:wM37za2Ap
vbaでpdfの入力フォームとかいじる必要がでてきたけどぜんぜんわかんねえ
2019/07/08(月) 22:30:38.20ID:IUy7ighP0
>>217
AdobeのPDFを編集出来るバージョンを持ってれば、参照設定でいじれるし、
ググれば結構作例が出てくるから難しくはない。
無ければ難しいだろうね。
2019/07/08(月) 22:33:03.25ID:K1lNVB+B0
Acrobatなしのpdf編集なんて楽勝やろ、と思ったらゲキムズで諦めた
今でも難しいんかね
2019/07/08(月) 22:37:09.99ID:IUy7ighP0
中身がテキストじゃなくバイナリって時点で、Acrobatなしは諦めたけど、
XFDFだっけ?
ああいうのでも良ければ何とかなるかもしれない。
2019/07/08(月) 23:33:33.59ID:UtNHHKkH0
>>219
まだ昔の方が比較的簡単だった
今はもう完全に不可能と思った方がいい
2019/07/09(火) 06:44:08.92ID:WKH76Tm+0
>>221
ありがとう
素直に無理だと言えるわ
2019/07/09(火) 08:30:06.28ID:6Bq35cxKM
>>221
構造は基本変わってないでしょ?
機能がたくさん付加されてるから完全対応とかはめちゃ大変だけど
2019/07/09(火) 12:13:15.60ID:DKfsNX1q0
ゼロからPDF形式のファイルを生成するだけなら簡単
下位互換はあるから、昔の簡単なフォーマットで作ればいいだけだから

最新バージョンの編集は、機能が増えすぎてちょっとやそっとじゃ対応できない
PDFの仕様書はネットに転がってるから、あとはやる気次第かなあ
https://itchyny.haten%61blog.com/entry/2015/09/16/100000
225デフォルトの名無しさん (スップ Sd1f-SD32)
垢版 |
2019/07/09(火) 19:47:33.40ID:IlkFvBc6d
だからそんなのをVBAでやるなって
エクセルとかオフィス専用なんだろ?
2019/07/09(火) 22:23:38.13ID:oeycIJBCM
いいなぁ僕もマウントできるくらい、まくろのお勉強しないとなぁ
2019/07/10(水) 00:05:48.15ID:2g97+NtOM
>>217
単にWordで入力欄のあるPDFを作るのをVBAで補助するだけじゃあ駄目なの?
228デフォルトの名無しさん (ワッチョイ 03f1-6S3C)
垢版 |
2019/07/10(水) 03:46:18.75ID:/43btnxd0
>>227
駄目だから聞いておるのだ
2019/07/10(水) 04:30:22.12ID:SDsuvs1Ha
>>228
聞いてないじゃん
230デフォルトの名無しさん (ワッチョイ 03f1-6S3C)
垢版 |
2019/07/10(水) 05:04:32.44ID:/43btnxd0
>>229
このハゲー!
2019/07/10(水) 09:21:12.99ID:/DhDK/tba
初歩的な質問で申し訳ないんだけど、ボタンをクリックしたらテキストボックスの値を参照して、参照した値を表示するプログラムがうまくいかないんだけどどう直したらいいのか教えて欲しい。エラーはこんな感じ
https://i.imgur.com/AG4P5Zh.jpg
https://i.imgur.com/VSa48Wl.jpg
2019/07/10(水) 09:31:54.02ID:ZjOdLx630
標準モジュールに書いてるの?
2019/07/10(水) 09:33:44.47ID:ZjOdLx630
間違えたユーザーフォームじゃないのか
たしかSheet1のモジュールに書かないと名前を認識しないはず
2019/07/10(水) 09:38:27.87ID:/DhDK/tba
>>232
標準モジュールに書いてる、というかボタンをつくってVBを編集すると標準モジュールにコードが書かれるんだけどSheet1にボタンのコードを書くってどうやるの?
2019/07/10(水) 10:10:47.92ID:2g97+NtOM
>>229
まあ作りたいものの要件も定義できないんだろうね
各種バージョンによって仕様のあるPDFをVBAで編集するなんて考えるだけ無駄なのに
2019/07/10(水) 10:32:27.39ID:/DhDK/tba
>>233の言うとおりにシート1に書いたコードを実行したら動くんだけど、ワークシート上のボタンを押しても反応しないのはなんでなんだ
https://i.imgur.com/Kwm4ZvL.jpg
https://i.imgur.com/QgVMdBG.jpg
2019/07/10(水) 10:51:52.96ID:ZjOdLx630
イベントの名前間違えてるよ
2019/07/10(水) 10:54:31.22ID:yoXwfxDh0
>>236
このシートにあるボタンって標準モジュールのボタン2で書いたコードと同じもの?
2019/07/10(水) 10:57:37.67ID:yoXwfxDh0
ボタンのプロパティを見てみて
2019/07/10(水) 10:58:01.30ID:/DhDK/tba
>>237
出来ればどこを間違えてるか教えて欲しい
>>238
同じもの
241デフォルトの名無しさん (ワッチョイ 6ff7-T0Pq)
垢版 |
2019/07/10(水) 11:04:25.88ID:ZjOdLx630
Private Sub TextBox1_Change() の1行を
Sub ボタン2_Click()
に変えれば動くはず。
2019/07/10(水) 11:14:52.80ID:yoXwfxDh0
>>240
同じものであれば、>>236と同じエラーが出るってこと
ならば、txt.TextだけどSheets(1).txt.Textでないの
243デフォルトの名無しさん (ワッチョイ 6ff7-T0Pq)
垢版 |
2019/07/10(水) 11:37:21.93ID:ZjOdLx630
ごめん確認したけどActiveXじゃないフォームコントロールのボタンだと
シートモジュールに書いても無理だったわ。
標準モジュールに以下のとおりやると動く

Sub ボタン1_Click()
MsgBox Worksheets(1).TextBoxes("txt").Text
End Sub

ワークシート1枚なのが前提だから調整してね。
2019/07/10(水) 11:44:51.66ID:ZjOdLx630
オブジェクト名だけでの直接指定ってシートモジュールでないと通じないし
でもフォームコントロールのイベントは標準モジュールに書かないと動かないっていう
2019/07/10(水) 11:50:01.32ID:/DhDK/tba
>>239
ボタンのプロパティが表示されない
>>242
>>243
こうなったんだけどなんでだろ
https://i.imgur.com/qivCtCe.jpg
2019/07/10(水) 11:52:33.72ID:/DhDK/tba
https://i.imgur.com/017G76Q.jpg
>>243
画像こっちだった
2019/07/10(水) 12:02:55.71ID:/DhDK/tba
ごめんフォームコントロールじゃなくてActiveXでボタンをつくったらちゃんと動いた皆が言ってたのはこういう事だったのか
https://i.imgur.com/aBVNoI2.jpg
2019/07/10(水) 12:05:52.68ID:ZjOdLx630
こっちだとこれで上手くいくんだけどね
https://i.imgur.com/BOjQoKC.jpg
環境はoffice365
テキストボックスは挿入タブから作成
ボタンは開発タブのフォームコントロールから追加
2019/07/10(水) 12:07:10.09ID:ZjOdLx630
そうそうフォームコントロールよりActiveXのほうが複雑だけど融通が利くよ
2019/07/10(水) 12:09:25.00ID:yoXwfxDh0
>>244
まあ、「フォームコントロール」は使うなと教わった気がする
ActiveXですべてコントロール書くな
混ぜて使うと今回みたいにぐちゃぐちゃになるよな
>>245
>ボタンのプロパティが表示されない
ああ、フォームコントロールは表示しないのか、使わんほうがいいと思う
2019/07/10(水) 12:15:01.17ID:/DhDK/tba
ID:ZjOdLx630 ID:yoXwfxDh0色々教えてくれてありがとう
2019/07/10(水) 19:31:16.98ID:AV6w05Aj0
ActiveXってまだ使えるのか?
2019/07/10(水) 21:42:45.32ID:eupZ9wWw0
ガソリンとディーゼルのいいとこ取りじゃけんの
2019/07/10(水) 23:29:23.93ID:c8eGatqv0
簡単なフォーム作って動作確認したらテキストボックスの内容だけが指定セルに入力されません。
どこを修正できるかおしえてくれませんか?
Private Sub ComboBox1_Change()

If ComboBox1 = "1−1" Then
Range("A1").Select
End If

If ComboBox1 = "1−2" Then
Range("B1").Select
End If
End Sub

Private Sub CommandButton1_Click()

If ComboBox1 = "1−1" Then
Range("A1").Value = TextBox1.Text
End If
If ComboBox1 = "1−2" Then
Range("B1").Value = TextBox1.Text
End If
End Sub
2019/07/10(水) 23:32:43.62ID:kmPcU4z40
狙いがさっぱり分からん。
何でコンボボックス選択でセルを選択してんの?
2019/07/10(水) 23:35:04.06ID:kmPcU4z40
あと何でComboBox1の後を省略すんの?
2019/07/10(水) 23:37:12.76ID:c8eGatqv0
四半期ごとのデータを入力する際に入力するセルをコンボボックスで指定したいからですね
2019/07/10(水) 23:43:37.21ID:kmPcU4z40
いやいや、セルの選択は必要無いと言ってんの。
つまりComboBox_Changeのプロシージャは全部必要無いと思うと言ってる。
2019/07/10(水) 23:46:55.16ID:kmPcU4z40
選択してなくても入力出来るし、普通はセルを選択するコードって書かないものなんだ。

敢えて、ユーザーにここだよと知らせるために選択することなんかは有るけどね。
2019/07/10(水) 23:54:25.92ID:c8eGatqv0
>>258
確かにChengeプロシージャはなくていいと気づきました。クリックイベントで思いっきり指定してますね。ありがとうございます。
そこを丸々消してもテキストボックスの内容が指定したセルに入力されないところがどうしても分かりません、、、
2019/07/11(木) 00:39:06.69ID:pxThR6/X0
ComboBox1の後ろを省略すると、Valueなんだっけ?
Valueじゃないものがデフォルトなら、入らないと思うけど。
2019/07/11(木) 01:13:07.62ID:zjNMm0TG0
>>261
ようやく意味がわかりましたわ。>>256はそのことを言ってたんですね。
そこを修正してようやく入力できました。
ありがとうございました。
2019/07/11(木) 22:57:04.73ID:xkc4Rvzm0
レポートでexcelの問題が出たのですがexcelのeの字もわからないド素人で
全く解ける気配がないので解いていただきたいのですが

excel表↓
https://gyazo.com/09fca1ee73fb7c9e157e34b8087266aa
処理条件↓
https://gyazo.com/ea0a04a984a92f0cdf4fb02024003e06
問題↓
https://gyazo.com/91b5a7da5245d2ff536597fcf7414b13
https://gyazo.com/7bebc69a5a6ef8e282adfdf814311a72
https://gyazo.com/c55982b0303f977923d30dd1c46ec9d2
https://gyazo.com/deb035bd0a7e3e3118e3bfac5ef26071

excel表と処理条件を見て問題を解く感じです
お手数ですがどうかお願い致します
2019/07/11(木) 23:07:07.18ID:PbC6cv/Q0
ここは、宿題スレじゃないですよ
2019/07/11(木) 23:12:11.45ID:xkc4Rvzm0
>>264
そうなのですがたexcelプログラミングに特化した方達がいるスレが他に見当たらなくて・・
何卒お願い致します><
2019/07/11(木) 23:14:33.66ID:LDGmmRwS0
>>263
他人の力でレポート提出するのはよくないよ
2019/07/11(木) 23:15:35.55ID:Nso1E01m0
最初から解く気がないからここで答え聞いても多分わからないままじゃない?
2019/07/11(木) 23:25:23.16ID:xkc4Rvzm0
プログラミングに興味があってしてるわけじゃないので分からないままで大丈夫です
教科書を見ても該当の問題がないので八方塞がりになってます
ですのでお願いします><;
2019/07/11(木) 23:31:12.20ID:UiyHSzM10
excelスレとマルチか
2019/07/11(木) 23:31:23.70ID:wWiKJ29t0
つーかここエクセルのスレというかエクセルのVBAのスレだしな
表計算そのものはスレ違いかと
271デフォルトの名無しさん (ワッチョイ db8e-RA7T)
垢版 |
2019/07/11(木) 23:42:29.20ID:024QjgN/0
>>268
馬鹿は死ね
2019/07/12(金) 03:16:30.68ID:DpggHnEF0
>>263
単位落とせ
ついでに退学しろ
2019/07/12(金) 05:15:54.45ID:+ZgwoyX/x
>>268
自力で出来ないなら諦めるしかなかろう
能力以上に背伸びしようとすると他人様に迷惑がかかるから分を弁えて生きていけよ
2019/07/12(金) 05:28:28.73ID:Q/r6ioNA0
難癖つけたい昭和の爺しかいないのか(´ . .̫ . `)
他をあたります
2019/07/12(金) 06:15:25.02ID:/IwseM/M0
これが本性です
2019/07/12(金) 06:24:13.28ID:Q/r6ioNA0
時間を使ってもらうことだから解答してもらえないのは不満はないけど
嫌味だけ言ってくるのはね
2019/07/12(金) 06:55:24.80ID:X0laGJXI0
>>268 みたいなこと書いたら火に油。
・表計算の関数式はプログラムではない。Excelのプログラム言語はVBAで、関数式ではない。

・質問内容がExcelとネット環境が使える状態ならヘルプやネット検索で得られる情報で手元検証しつつで解ける初歩の初歩レベル。やるべきはここで丸投げや教科書を調べることではなく、ヘルプやネットの調べ方や、キーワード抽出能力、試し実験する能力
これらの能力はExcelに限らず仕事全般に必要
2019/07/12(金) 07:29:13.34ID:Q/r6ioNA0
その一文なくても答えてくれてなかったと思うけどね
上の質問内容もレポート全ての問題ではなく調べても考えてもい解けなかった7問です
その上で質問したので丸投げとか言われても・・・。
279デフォルトの名無しさん (ワッチョイ db8e-RA7T)
垢版 |
2019/07/12(金) 07:33:03.45ID:6bL6jjvK0
>>278
スレの違いすらわからない丸投げの馬鹿
マルチポスト
死ねや
2019/07/12(金) 07:34:50.24ID:jfJ/52DV0
>>278
その努力の跡を見せるのと見せないのでは反応が全然違うのよ
次があるか分からないけど参考までに
2019/07/12(金) 07:37:58.23ID:/IwseM/M0
>>278
どうやって調べたか教えて欲しい
複合参照一つにしても、
「セル番地を複合参照で列を固定」質問文そのまま検索するだけで答えが出てくる
これ以下の行動が想像出来ない

納得できる理由を持ってきたら全問解いてやるぞ。
2019/07/12(金) 08:19:59.80ID:Q/r6ioNA0
>>281
それはあなたがexcelの基礎を熟知してるから調べたらすぐ納得出来る答えが見つかるだけです
excelの知識0未満の自分が検索しても相対参照複合参照セル参照、固定etcどんどん理解不能な専門用語が出てくるだけで
基礎知識0の人間がいくら調べたとこで応用の問題が解けるわけない
努力とか苦労とか抜きで単純に教えたくないだけでしょ
0から腰を据えて勉強する時間もないので色んなとこをあたってみます
2019/07/12(金) 08:28:22.02ID:MpRoJlc8M
>>282
昔自分もそうだったから気持ちわかるよ
ただわからないままでいいから答えだけ教えろって態度が良くなかったね
Excel総合相談所の方では途中まで答えてくれようとしていた人いたのに勿体無い
2019/07/12(金) 08:30:54.63ID:DpggHnEF0
というか聞くならこんな場末の掲示板じゃなくて同じ講義受けてる友達に聞けよ
2019/07/12(金) 08:32:04.14ID:ouq9dw9uM
宿題丸投げからの捨て台詞
伝統ですな
2019/07/12(金) 09:47:37.46ID:29ekbyBa0
どこの質スレでも、どこまでわかっててどこからわからないかとか説明しないと丸投げは答えを貰いにくい
それはともかくとして内容的にここではスレチなので該当スレに移動して聞くのがよい
そういうの無視して自己中心的な態度を取ると相応の反応しか来ないことが多い
287デフォルトの名無しさん (ワッチョイ b6f7-YtL5)
垢版 |
2019/07/12(金) 11:24:29.37ID:/cn0QgdD0
>>263
@ SUM($F5:$F9) A SUM(F$5:F$9) B SUM($F$5:$F$9)
@ B5 * SUM(C5:E5) A F5 / $F$10 * 100
B IF(G5>0.2,"〇", "")
C Average(C5:C9) D MAX(C5:E9)

一番目は問題文が意味不明すぎて何ともいえない。答えを記入て?コピー入力時の値なの入力数式なの?
二番目、レポート第三回「算術演算子のミス」ってのが*/じゃなく×÷を使えって意味なら変えてね
288デフォルトの名無しさん (ワッチョイ b6f7-YtL5)
垢版 |
2019/07/12(金) 11:26:26.64ID:/cn0QgdD0
三番目の0.2は20の間違いだった
2019/07/12(金) 14:33:40.36ID:2f1lWtua0
>>282
熟知するまでにどれほどの努力が有ったんだろうね。

全く教えがいが無い。
どうせ身に着けようとしないから3日もすれば同じ質問してくる。
2019/07/12(金) 14:35:55.96ID:2f1lWtua0
バカは自分のことしか考えない。
上級者がそうなる迄にどんな努力したのかとか、全く考えない。
2019/07/12(金) 17:23:38.01ID:pyjYzCB0M
>>282
何のレポートか知らないけどこういう試験みたいなレポート課されるってことはExcelのこと教えてくれる講義かなんかでしょ?
それ取っといて基礎知識0なわけないよね
サボってたなら自業自得だ諦めろ
292デフォルトの名無しさん (スッップ Sdba-oxAJ)
垢版 |
2019/07/12(金) 18:12:35.56ID:4Zy3LZ5Ld
ここで教えてもらったり聞いたりするのも勉強だろ?
丸投げで解決するなら効率良いし
2019/07/12(金) 19:02:17.48ID:KP5K/G1D0
結果だけ知っても応用無理
自力でやった過程も大切
自力で訊いたとか言いそう
2019/07/12(金) 19:20:24.98ID:/IwseM/M0
>>292
聞き方が悪すぎてそれすら出来ていないw
礼儀正しく聞くか努力した後を見せるか、それだけで全部終わるのにな〜んもせずに時間の浪費
社会に出てこなくていいかな
2019/07/12(金) 19:37:39.45ID:A5UWWPauM
>>292
解決できるなら効率いいけど結局解決できてないし煽られて顔真っ赤になって効率マイナスになってるぞ
296デフォルトの名無しさん (ブーイモ MMff-Xwip)
垢版 |
2019/07/12(金) 19:58:53.73ID:0f105GfpM
礼儀w
ここをどこだと思ってるんだ
297デフォルトの名無しさん (ブーイモ MMff-Xwip)
垢版 |
2019/07/12(金) 19:59:54.35ID:0f105GfpM
顔が赤い?
ここはインターネットだから見えないのになぜわかるw
2019/07/12(金) 20:11:35.98ID:/IwseM/M0
>>296
vbaスレだよ
下手に出るor努力家なら普通に教えるし、
上から目線で面白いキャラならそれはそれで笑いの対価に答えてあげる楽しいスレ

俺はどう調べたかを教えてくれれば答えるつもりだったけど、何故かそれすら無かった
2019/07/12(金) 20:15:07.03ID:lBUyKP2MM
しょうがねえな答えてやるけどどこの学校の何の課題かだけ教えろ
課題の背景知らないとどう回答していいのかもわからんわ
300デフォルトの名無しさん (スッップ Sdba-oxAJ)
垢版 |
2019/07/12(金) 20:23:30.14ID:4Zy3LZ5Ld
>>287さんのような立派な人が教えてくれる
何も知らない人は難癖付けて優越感に浸るだけ
301デフォルトの名無しさん (ブーイモ MMff-Xwip)
垢版 |
2019/07/12(金) 20:25:42.71ID:0f105GfpM
うんち大学うんち学科のうんち講義の課題だ
2019/07/12(金) 20:28:01.99ID:wJS9+2ViM
なるほどなあ
立派にうんちへの道を歩んでいるようで何よりだよ
2019/07/12(金) 20:32:10.07ID:2f1lWtua0
教える奴ってのは教わった奴がそれで成長するのが嬉しくて教える。

教わっても課題提出した後はゴミにするようなバカに教えるわけが無いだろ。
304デフォルトの名無しさん (ワッチョイ e301-YtL5)
垢版 |
2019/07/12(金) 20:40:23.09ID:mfoRyya60
>>298
最初は下手に出てたけど嫌味を言ってくるから同じ対応しただけっすよ^
何度も言ってるけど自分にexcelの基礎知識が一切ないから「こうやって解こうとしたけど此処が分からなかった」とか
理屈だって説明ができないって言ってるじゃん。日本語理解してます?
最初から教える気がないくせに気持ちが悪い。
(解いて貰うことが当たり前とは全く思ってないけど、こういう難癖爺は本当に不愉快です)
2019/07/12(金) 20:49:36.00ID:2f1lWtua0
基礎知識が無ければ解かなくて良いだろw
お前のやり方でOKなら世の中にExcel使える奴なんて1人も出て来ないんだよ。
皆、努力してる。
それが嫌なら解くな。
2019/07/12(金) 20:57:25.89ID:mLJVOkVZM
これがうんちの書き込みなんだね
勉強になる
2019/07/12(金) 21:01:52.58ID:ouq9dw9uM
最後まで下手に出てりゃ教えて貰えたかも知れないのに
本当バカだな
2019/07/12(金) 21:05:56.83ID:LwNMU5Wq0
だまされる間抜けがいるか
2019/07/12(金) 21:12:02.87ID:JRZDO5f+d
最初から一貫して、考える気がないから答えだけ教えろと言ってるから反発を買ってると何故わからない
そういうのは下手に出てると言わない
それ以前にスレチ、マルチポストなんかどこでも嫌われる
310デフォルトの名無しさん (ワッチョイ db8e-RA7T)
垢版 |
2019/07/12(金) 21:17:37.52ID:6bL6jjvK0
>>304
死ねや、クズ
2019/07/12(金) 21:24:19.02ID:uqHBg6aCM
何がどうスレチなのか本人理解していない
本当にExcelを起動させたことだけはあるってレベルなんだろうな
それにしても相対参照なんてはじめてのExcelみたいなテキストの初めのほうに出てくるのに理解不能な専門用語って…
2019/07/12(金) 21:25:04.82ID:0wJGP2+yM
賢くないんだろうな、色々な面で
人生大変そう
2019/07/12(金) 21:35:21.67ID:/IwseM/M0
>>304
だから「何をして」分からなかったの?って聞いてるんだけど
君の行動を知りたいんだよ
まさか何を検索したかも覚えてないの?
2019/07/12(金) 21:36:08.92ID:/IwseM/M0
まぁでも複合参照って単語は俺も覚えてないわ。使わんやろ
2019/07/12(金) 22:12:20.02ID:smOphNvK0
>>313
出ている問題文を区切って単語単位でいくつか検索しましたよ。
・・・ですが基礎知識が皆無なので分からない単語が更に増えていくばかりで意味がなかった。
答えにたどり着いていたとしてもそれが答えなのかどうかもわからない。
理由は単純明快で”どこどこ”が分からない等ではなく”excelの全てが”分からないからです。>>311さんの言う通りexcel起動したこともないので
まあ此処では教えてもらえないでしょうね
2019/07/12(金) 22:20:19.35ID:/IwseM/M0
excel起動したこともないwwwwwwwwwwwww
笑った
2019/07/12(金) 22:28:24.38ID:/IwseM/M0
笑ったから教えてあげる
>>287は全部間違いなく合っている
終わり
2019/07/12(金) 22:29:15.47ID:/IwseM/M0
使えるかどうかしらんけど一応全部回答済みのブック
https://dotup.org/uploda/dotup.org1894821.xlsx.html
2019/07/12(金) 22:30:53.10ID:Es4UsF4s0
そういやあっちのスレに、OSがWindows10で、バージョンはExcelって書いてるな。

バージョンがExcelって何だよ?
一体どんな環境で勉強してるんだ?
紙だけでやろうとしたら、そりゃわからんわ。
2019/07/12(金) 22:32:13.77ID:1ltU+UyNM
>>318
多分Excelソフト自体持ってないんじゃない?

なんか色々合点がいった
そりゃあわかんないよね…頑張れ高校生!
2019/07/12(金) 23:16:14.01ID:XVv52DQ4d
Excel起動したこともないって、完全にやる気ないんじゃん
実際にやっても見ずに文字だけ見たってわかるわけがない、そんなの知識あるなしは関係ない
なんでそれをそんなにドヤって語れるんだ
ほんとに身勝手だな…
2019/07/12(金) 23:23:25.78ID:pg2caPDLM
もう釣りとしか思えない
2019/07/13(土) 01:49:14.77ID:WjcplQ3r0
>< ←これ使い出したあたりからネタにしか見えなくなった
2019/07/13(土) 01:50:42.43ID:mYiqXZWta
さすがにエクセル起動したことない奴にマクロを説明するのはしんどすぎるわ

日本語話せない外人に川柳の深さはさすがに説明できないです
2019/07/13(土) 02:20:10.82ID:1bpjRcDqM
>>314
複合参照はよく使うでしょ
これやっとかないとずれるじゃん
2019/07/13(土) 03:24:06.67ID:PyRj0Hxo0
ちゃんとネタに付き合ってるところがお前らのいいところだわ
他スレじゃここまで付き合うやついないわ
2019/07/13(土) 06:17:54.91ID:K15oVfEY0
>>325
複合参照自体はそれなりに使うけどその単語は知らんかったわ
てか意味の取りづらい単語だな
2019/07/13(土) 06:51:24.31ID:LCWxIMYj0
商業高校などでExcelは必須科目のはずだが、「起動したこともない」生徒を教えるのはしんどいなあ
2019/07/13(土) 07:30:37.64ID:URTJU5cT0
問題に親切にも、教科書P99とか、レポート第3回参照とか書いてあるけどな

99ページ超えるような教科書と、過去3回以上のレポート提出があって
エクセルの知識ゼロとか言うあたり、どうしようもないな
330デフォルトの名無しさん (スッップ Sdba-oxAJ)
垢版 |
2019/07/13(土) 09:00:32.20ID:/hcsiiwtd
人に教える能力がない奴に限って大声で叫ぶ
分からないなら黙ってりゃ良いのに出しゃばるなってw
>>287さんのような人は素晴らしい
2019/07/13(土) 09:05:56.81ID:BcXUPH3s0
まだやってんのかよ
こんなとこ覗いてる暇があったらExcel勉強しろよバカなんだから
2019/07/13(土) 09:15:07.93ID:CdxTXa9P0
もう諦めてその単位落とした方が自分の為まである
333デフォルトの名無しさん (ワッチョイ db8e-RA7T)
垢版 |
2019/07/13(土) 10:27:47.26ID:BOO56W8H0
>>330
こんな馬鹿に回答を示すやつが馬鹿だろ
334デフォルトの名無しさん (スッップ Sdba-oxAJ)
垢版 |
2019/07/13(土) 10:33:21.62ID:/hcsiiwtd
>>333
反応するお前も馬
2019/07/13(土) 10:53:53.05ID:YgFAo0DCd
これだからスレの使い分けをしないやつらは迷惑なんだ…
2019/07/13(土) 11:14:10.76ID:Z2RRNc9B0
>>327
俺も複合参照って呼び名は知らんかったわ
2019/07/13(土) 11:30:50.83ID:4ZkgUc3hM
とりあえず問題画像を拡散して学校名とクラス辺りから特定してみようか
3連休のくだらない遊びとして
2019/07/13(土) 13:32:22.46ID:WjcplQ3r0
これまで発掘された投稿(日付順)
ttps://mevius.5ch.net/test/read.cgi/bsoft/1556754363/731-
>>263
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12210409122
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10210410850
ttp://www.excel.studio-kazu.jp/kw/20190711212238.html

ttps://mevius.5ch.net/test/read.cgi/bsoft/1556754363/806,809
>期日までに全て正解した状態で完了しないと出席足りてても単位にならない
>期日は7/24 1,2回しか提出チャンスはない
→通信制あるいは定時制?

ttps://gyazo.com/1c48e5087536c8b403b6f8ef9131b00c
>2019情報処理R4-5
2019/07/13(土) 13:34:16.06ID:WjcplQ3r0
抜けてた。エクセルの学校より
>たかが高校の宿題程度です
2019/07/13(土) 14:19:52.14ID:gczMvB9Ad
なんか手当たり次第だな
しかも行く先々で自己中で上からだし、根っからそういう性格なんだな…
こんな事で時間浪費するより先生に聞くなり泣きつくなりした方が早いのに
2019/07/13(土) 14:22:32.54ID:mP3nVFr50
twitterあたりなら誰かがすぐ答えてくれるんじゃないのかな
なんで5chにこだわるのか
2019/07/13(土) 14:26:22.66ID:uYMBN7vuM
そりゃ釣りがいがあるからさ
2019/07/13(土) 14:29:12.24ID:VRwhUdyYM
あの調子じゃどうせこの先の人生ハードモードだから放っておけばいい
親と教師はご苦労なことで
2019/07/13(土) 14:31:09.05ID:eZhaymGYx
特定を恐れただけじゃね
5chの専門板ならリスクが低いと思ったんだろ
2019/07/13(土) 15:02:49.54ID:xMkRt+rF0
もうやめたれ
vbaの質問スレにvbaなんか使わないこと質問してる程度のやつなんだぞ、、、
2019/07/13(土) 17:48:23.12ID:j8mJqYZga
ゴミのせいでdat落ちした
2019/07/13(土) 21:14:04.44ID:hOcuJYrL0
へー、日本の学校では複合参照って呼ぶのかw
2019/07/13(土) 21:22:53.61ID:MFeSB4Ik0
「列を絶対参照」とか言ってたな
厳密に言うと間違ってたんかね〜
349デフォルトの名無しさん (ワッチョイ 768c-MWwc)
垢版 |
2019/07/13(土) 21:27:18.14ID:TftDpSrJ0
Microsoftが言ってるんだから他の呼び方はできんだろ
https://support.office.com/ja-jp/article/-dfec08cd-ae65-4f56-839e-5f0d8d0baca9
2019/07/13(土) 21:39:49.47ID:MFeSB4Ik0
A$1 (相対参照列と絶対参照行)
あぁやっぱりこう呼ぶのか
じゃないと区別つかなくて不便だろう
2019/07/13(土) 21:39:56.15ID:9cyGSVwA0
列を絶対参照はまさにそういう意味で
複合参照と言っているものと意味の範囲が異なる
だから勝手に名前つけて呼んでもセーフ
2019/07/13(土) 22:13:07.08ID:K15oVfEY0
>>349
英語ではmixed referenceだから混合参照の方がまだマシな気がする
353デフォルトの名無しさん (ワッチョイ dbf1-Xwip)
垢版 |
2019/07/15(月) 12:11:27.76ID:nnQ6IJ0T0
VBAでクラスのメンバに配列がpublicで宣言できないのです。
これはなぜですか?
privateならできるようです
そういう仕様になった背景に異常に興味があるのですがなぜでしょうか?
2019/07/15(月) 12:19:29.86ID:MveVqmrw0
>>353
不思議だし理由はよくわからん
VariantをReDimして使うしかなさそうだ
355デフォルトの名無しさん (ワッチョイ dbf1-Xwip)
垢版 |
2019/07/15(月) 12:29:52.78ID:nnQ6IJ0T0
>>354
いやgetter, setterのPublic Functionを作って使った
2019/07/15(月) 14:13:53.52ID:Y2KwLYuBM
>>355
それだとコピーになっちゃわない?
357デフォルトの名無しさん (ワッチョイ dbf1-Xwip)
垢版 |
2019/07/15(月) 14:16:26.74ID:nnQ6IJ0T0
>>356

問題ないわよ
2019/07/15(月) 14:43:41.95ID:pIjNztNi0
>>353
しらなかった
https://i.imgur.com/Rzt8c7Q.png

VB.NETではできる様になっているので特にバッティングする要素などはないはず
多分何も考えずに作ったか、スペックの低いPC時代に何かバグがあったか
2019/07/15(月) 15:17:00.78ID:RV+E0P730
なにがなんでもユーザーにオブジェクトをカプセル化させたかったんだろう

MSはユーザーを誘導しようとして変な仕様を盛り込むのをよくやる
360デフォルトの名無しさん (ワッチョイ 768c-MWwc)
垢版 |
2019/07/15(月) 15:26:05.00ID:X93O9hPp0
https://pbs.twimg.com/media/D_edPTAU4AEYvVl.jpg:orig
2019/07/15(月) 15:58:16.17ID:pIjNztNi0
>>359
配列だけだからそれはない
別の事情があったか、単にミスだと思う
2019/07/15(月) 16:08:05.51ID:kvSb4Xi+x
>>358
この謎仕様と、引数付きコンストラクタを定義できない欠陥仕様がVBAのクラスモジュールの使い勝手を異常に悪くしてるよな
2019/07/15(月) 18:12:34.65ID:MveVqmrw0
>>357
小さければまあ
2019/07/15(月) 18:36:40.48ID:GvqRptrx0
VBAできたのOffice95だろ?
16bitに毛が生えたようなリソースで配列なんて便利なもん公開したら
アホが無駄遣いしてクレームが殺到するからだろうな
2019/07/15(月) 19:30:49.08ID:ex33LrHm0
>>364
> VBAできたのOffice95だろ?
Excel だけは先行しててExcel 5.0から
Office 95からWordとかAccessにも搭載された
> 16bitに毛が生えたようなリソースで
配列は32KB制限とかあるからリソース関係って言うのはあり得ると思う
2019/07/15(月) 20:03:59.10ID:+RJOjipn0
まぁVB含めてなんでこんな糞仕様やねん
てのは歴史的理由が大半なので深く考えてもしょうがないぞ
2019/07/15(月) 21:26:18.84ID:RV+E0P730
比較演算子の全項評価されるのまいった
一貫性があるといえばそうだがものすごく使いづらい

Excel VBAこそ関数型言語使うべきだったとおもう
2019/07/15(月) 21:34:48.93ID:P4vPK//00
Sub Sample()
Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer
RangeArea = InputBox("選択したいセル範囲を入力してください", "セル範囲入力")
Range(RangeArea).Select
i = 1
For Each rng In Selection
rng.Value = i
i = i + 1
Next rng
RowCount = Selection.Rows.Count
Selection.Copy
Selection(Selection.Rows.Count, 1).Offset(2).Select
Selection.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub



このコードの最初の部分のセル範囲を選択するところをapplication.inputboxに変更したいのですが、やり方がわかりません。どうかご教示ください。
2019/07/15(月) 21:46:33.77ID:pIjNztNi0
>>368
これで普通に動いたんだが

Sub Sample()
Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer
RangeArea = Application.InputBox("選択したいセル範囲を入力してください", "セル範囲入力")
Range(RangeArea).Select
i = 1
For Each rng In Selection
rng.Value = i
i = i + 1
Next rng
RowCount = Selection.Rows.Count
Selection.Copy
Selection(Selection.Rows.Count, 1).Offset(2).Select
Selection.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub
2019/07/15(月) 21:46:46.43ID:pIjNztNi0
変更したのは産業目だけね
2019/07/15(月) 21:49:39.76ID:8d+rlpP70
今北産業
2019/07/16(火) 01:35:56.38ID:R1s3VXbP0
>>369
ありがとうございました
2019/07/16(火) 14:39:56.14ID:OkBSeMU90
VBAのクラスでPublicな変数とか少しびっくり。
正直意味不明だわ。
普通はプロパティー作るんじゃ無いの?
2019/07/16(火) 15:28:36.24ID:7VziDFZHM
面倒だから、自分用はほとんど変数だな
2019/07/16(火) 15:44:34.61ID:2g+hTYUtM
>>373
まんまGetとSetを用意しといて「Public変数じゃない、カプセル化してます」と言う愚かな奴はいるかも知れない。
いや、流石にいないか
2019/07/16(火) 17:18:56.27ID:OkBSeMU90
>>375
えっ?
カプセル化してますなんて言わんがGETとLET用意するよ。まんまでも。
感覚として自然に。
自分はプロパティーはプロパティーと呼ぶしPublic変数とは言わないね。
2019/07/16(火) 19:15:49.24ID:2g+hTYUtM
>>376
プロパティが変数に直接紐付いているとは限らないから一概には言えないけれど
Public 変数が適している場合はPublicとして晒すさ。
2019/07/16(火) 19:26:46.13ID:Qwm6v/XnM
>>376
クラスがある変数を持ってたとして、
直接GetとLet用意することは少ないしPublicにするのは更に稀だ

一応念のため断っておく
2019/07/16(火) 19:47:18.06ID:OkBSeMU90
>>378
だから変数じゃないし。
プロパティーだし。
クラスがpublicな変数持ってるという考えが既に変に感じる。
勿論、内部にprivateな変数を持ってるのは当然だけど。

カプセル化等という言葉では無く(実際はその通りだけど)、感覚としてオブジェクトというものを捉えていれば普通の感覚。
2019/07/16(火) 19:48:58.07ID:OkBSeMU90
>>377
プロパティーは変数という感覚と違う。
2019/07/16(火) 20:04:05.57ID:Qwm6v/XnM
>>379
同じだなんて言ってないでしょ?

> クラスがpublicな変数持ってるという考えが既に変に感じる。

なんで??
勝手に触っちゃダメとか変更に弱くなるいうのはわかるが、それ以外の理由を持ってるみたいだね?
2019/07/16(火) 20:20:17.00ID:OkBSeMU90
>>381
カプセル化と結局一緒だけど、オブジェクト志向的に自然な考えからするとpublicな変数というのが変。
オブジェクトに意味のない数値がくっ付いてるイメージだね。

Excelでいうとセルに何故か変数がくっ付いていて、それがセルに関わるValueとかLeftとかそういう"意味付け"も持っていない感じ。
2019/07/16(火) 20:23:52.51ID:OkBSeMU90
クラスというのはオブジェクトを設計するわけだから意味の無いものをくっ付けるのは設計として違和感がある。
そして、意味が有るものはプロパティーとして設計するから自然にGET、LETを使ってた。
2019/07/16(火) 20:24:21.96ID:lW4DFx/50
>>373
そもそもvbaでクラスを作る事は本当にない
ブックがpublicみたいに見えるから今更privateとかにしても仕方ない

実際はprivateブックの下位に書いてるからpublicに見えるだけなんだろうけど、まぁ同じ
2019/07/16(火) 20:55:06.36ID:aLWtzg+T0
>>383
それも意味分からんわ
意味ないものをくっつけるってなんのこっちゃ?
2019/07/16(火) 21:09:04.93ID:B8vpu2Gm0
>>385
うまい言葉が見つからんが、ようは「宗教観の違い」ってやつじゃないか?
たぶん>>383の言いたいこととしては、
「プロパティにアクセスしてGetなりLetなりSetなりできるのに、
 この上Publicにして外部モジュールからメンバ変数への直接参照を可能にする意味があるのか?(設計おかしくね?)」
みたいな感じじゃないかなと思う。
2019/07/16(火) 21:36:49.17ID:5NJAvtdh0
着エロでおまんこクパァしたら萎えるだろ

そういうこと
2019/07/16(火) 22:12:37.21ID:osN3S5RL0
>>386
むしろGetもLetもできるならPublic変数でよくね?
2019/07/16(火) 22:55:41.34ID:B8vpu2Gm0
>>388
>GetもLetもできるならPublic変数でよくね?
そういうところが「宗教観の違い」なんだろうと思ったわけで。
>>383がこう思ってるんじゃないかなと思って書いただけだから、実際言いたいことは違うかもしれんし。
2019/07/16(火) 23:12:50.48ID:aLWtzg+T0
その宗教も生まれてから長い年月が経ったものだなあ
2019/07/17(水) 10:35:34.00ID:Zgptnqk10
VBAが悪いとかVBが悪いとか宗教とか別スレ立ててやれよ
どうでもいいわ(笑)
2019/07/17(水) 20:13:41.88ID:1fZng5Go0
>>391
あんまりよくない
他言語・複数開発の常識を鵜呑みにしてvbaに持ち込むとめんどくさくなるだけだぞ
2019/07/17(水) 20:57:20.47ID:LEfiTxxf0
それはもうその人がアレなだけでしょ
2019/07/17(水) 21:54:24.06ID:1fZng5Go0
程々が一番なんだけど、vbaに至ってはその采配がマジで難しい
普通は使い勝手の悪い言語は全自動で廃れるけど、恐らく唯一無二で太古の使い勝手のまま広まってしまった言語
どうしても荒れると思うし、正解もない
2019/07/18(木) 11:35:34.82ID:SjGJ8Hso0
>>1
スレタイに戻れよ
>ExcelのVBAに関する質問スレです
>コード書き込みや作成依頼もOK
2019/07/18(木) 17:21:20.08ID:pDSkjMbHd
Worksheet_SelectionChangeイベントを使って選択されたセルがColumns(20)を超えて選択された場合に選択を19までに戻したいんですけどコードを教えて下さい。
2019/07/18(木) 17:29:18.97ID:iWlQ47rb0
application.enableEvents = false
if selection.column > 20 then
selection.resize(selection.row,19).select
end if
application.enableEvents = true
398デフォルトの名無しさん (ワッチョイ fff7-ShKg)
垢版 |
2019/07/18(木) 17:33:44.07ID:iWlQ47rb0
まちがえた
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Selection
If .Columns.Count >= 20 Then
Excel.Application.EnableEvents = False
.Resize(.Rows.Count, 19).Select
Excel.Application.EnableEvents = True
End If
End With

End Sub
2019/07/18(木) 17:44:11.00ID:iWlQ47rb0
enableEvents操作いらんかったわ
2019/07/18(木) 17:48:00.14ID:pDSkjMbHd
>>398
早い返信ありがとうございます。
コードありがとうございます。

これって例えば選択したセルが30から60と選択された場合ってエラーですか?
2019/07/18(木) 18:52:19.99ID:iWlQ47rb0
いや、
30〜60列目までの範囲が選択されたら
30〜48列目が選択された状態に変える
要望内容を捕らえ違えたかな?
402デフォルトの名無しさん (ワッチョイ fff7-ShKg)
垢版 |
2019/07/18(木) 20:19:45.62ID:iWlQ47rb0
もし19列目(T列)移行を選択しないようにするって意味なら以下
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ActCel As Excel.Range
Set ActCel = ActiveCell
With ActCel
If .Column >= 20 Then
Set ActCel = Cells(.Row, 19)
End If
End With
Dim cngRng As Excel.Range
With Target
If .Column > 20 Then
Set cngRng = Range(Cells(.Row, 19), Cells(.Row + .Rows.Count - 1, 19))
ElseIf .Column + .Columns.Count > 20 Then
Set cngRng = Range(Cells(.Row, .Column), Cells(.Row + .Rows.Count - 1, 19))
End If
End With
Excel.Application.ScreenUpdating = False
Excel.Application.EnableEvents = False
If Not cngRng Is Nothing Then
cngRng.Select
ActCel.Activate
End If
Excel.Application.EnableEvents = True
Excel.Application.ScreenUpdating = True
End Sub
403デフォルトの名無しさん (ワッチョイ 4f91-9KOF)
垢版 |
2019/07/18(木) 21:09:01.60ID:Vm+OSKMy0
’こんな感じじゃなくて?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim rng As Range
  Set rng = Intersect(Columns("A:T"), Target) '20まで
  If Not rng Is Nothing Then
    rng.Select
  Else
    Cells(1, 1).Select 'エラー時A1を選択
  End If

End Sub
2019/07/19(金) 22:28:50.87ID:/2THaakJ0
行が削除された。行が挿入されたを認識したいんですがなんか方法ありませんか?
2019/07/19(金) 22:43:18.81ID:TvxEimVQ0
>>404
別シートから認識したいシートを参照しておき、参照先が変わったら認識とか
めんどくさすぎるか
2019/07/20(土) 02:29:28.36ID:mZk+4Ek40
>>404
WithEventsの変数2つ作って行削除行挿入のコントロールを入れておいてclickイベントで弄る
407デフォルトの名無しさん (ワッチョイ 3f8a-8mHW)
垢版 |
2019/07/20(土) 05:25:11.57ID:TdLuYGU30
どんな状況で使うんだそれwww
勝手に削除するやつがいるのか?
2019/07/20(土) 06:34:43.57ID:dpChKN8u0
おるぞ・・・
2019/07/20(土) 07:37:09.15ID:vf/4Yo8ld
Worksheet_Changeイベント内で

if Target.Columns.Count=Columns.Count Then

の中に、コピーされた時を想定してデータを貼り付けた時に特定のセルを消してます。

このイベントは行削除も行挿入もif中に入ってくるので、その2つの場合は除きたいんですけど、無理ですかね?
2019/07/20(土) 09:00:22.03ID:FGTvlN9C0
素直にシート保護するんじゃダメなの?
2019/07/20(土) 13:12:04.73ID:M28zss090
>>409
その条件を別の方法に変えたら?
貼り付けのイベントを拾うとか。
2019/07/20(土) 14:06:46.24ID:yIzn2tUG0
>>404
でけたっぽいが、あらゆる使用状況でテストしたわけではないよ

Dim Sel As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 Set Sel = Target
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo GoErr
 If Target.Row = Sel.Row Then
  Debug.Print "変更"
 Else
  Debug.Print "挿入"
 End If
 Exit Sub
GoErr:
 Debug.Print "削除"
End Sub
2019/07/20(土) 14:13:01.97ID:yIzn2tUG0
別途配列にも代入しとけば、削除に反応してSQLのDELETE文の発行にも使えるね
そんなことやったような記憶
あんまりお洒落なことすると、ハマる恐れもあるが
2019/07/21(日) 01:34:22.11ID:jI92lOqS0
挿入ってなんかエロいな
2019/07/21(日) 08:59:00.32ID:8zHzQ0Ul0
じゃあ insertと言い直せ
2019/07/21(日) 09:15:07.24ID:tbU/thR+0
oh,yes
2019/07/21(日) 11:12:02.68ID:4aIgjVvla
「VBA StringBuilder」とかでググって出てくるコードの例(具体的にはhttps://qiita.com/e-katayama/items/8a114357b0df91cfbdbbなど)をベースに、特定の変換をかけた文字列を高速に連結する方法を考えてるんだが、
Midステートメントを使った置換そのものは早いんだが、クラス化すると処理全体としては&演算子を使った連結の方がなぜか早くなる。
可能な限り文字列型への代入は避けてるし、引数もByRefにしてるんだが、イマイチ原因がピンとこない。
StrPtrでm_bufferのポインタを確認すると、クラス内から見ればポインタはずっと同じだが、
呼び出してる外部モジュール側から確認すると、AppendやToStringとかのメソッドを呼び出す度に2つのアドレスを行き来してる。
これは自分のやり方が悪いんだろうか?
2019/07/21(日) 11:14:15.04ID:tbU/thR+0
コード晒してくれればボトルネックになってるとこを見つけれるかも
今日暇だからやってみるぞ
2019/07/21(日) 11:41:51.53ID:wqzeAX+60
>>413
配列に対してDelete出来るの?

>>417
どうやってるのか知らんけど、
ループ内でProperty Get使ったら、物凄く遅くなって、
やっぱ俺2次元配列でいいわwwwwってなったことはある。
2019/07/21(日) 12:13:56.99ID:yJjnZgJg0
>>419
まあ、自分の書いたコードなんて単なる設定
利用したルーチンがほぼほぼお仕事する
何を使うかで1万倍ぐらい違うこともあるだろ(笑)
2019/07/21(日) 12:18:26.68ID:yJjnZgJg0
あと、画面更新の負荷はものすごい大きいよな
2019/07/21(日) 12:44:29.43ID:/atv33Bt0
>>419
> 配列に対してDelete出来るの?
配列と比較してシート側の削除を検出するってことじゃないかな
2019/07/21(日) 13:53:33.71ID:jI92lOqS0
デリケートにやるんだ
2019/07/21(日) 14:18:30.41ID:4aIgjVvla
>>418
ありがたいが、今ぱっと出せるのがクラス部分ぐらいしかない・・・
(StringBuilder.cls)Option Explicit
Private sBuf As String
Private iBuf As Long
Public Sub Initialize(ByRef tSize As Long)
  sBuf = String$(tSize, vbNullChar)
  iBuf = 0
End Sub
Public Sub Append(ByRef sValue As String)
  If iBuf + Len(sValue) > Len(sBuf) Then sBuf = sBuf & String$(Len(sBuf) * 2 + Len(sValue), vbNullChar)
  Mid(sBuf, iBuf + 1) = sValue
  iBuf = iBuf + Len(sValue)
End Sub
Public Function ToString() As String
  ToString = Left$(sBuf, iBuf)
End Function
https://excel-ubara.com/excelvba4/EXCEL271.html
のに少し手を加えただけなんだが(class_initializeでなく、呼び出し側が必ずinitializeを呼び出してサイズを決めるようにした)。
呼び出し側のコードが今手元になくて夜中までちょっと無理なんだが、やってる中身は、
Set objStringBuilder=New StringBuilder
Call objStringBuilder.Initialize(CONST_SIZE)
For i=1 To Len(srcStr)
Call objStringBuilder.Append(convertFunction(Mid$(srcStr,i,1)))
Next i
Let MainFunction=objStringBuilder.ToString
みたいな感じ。実際はもうちょい複雑だが、&使う方はここが
For i=1 To Len(srcStr)
Let MainFunction=MainFunction&convertFunction(Mid$(srcStr,i,1))
Next i
になってる、ぐらいなもん。
やっぱ、文字列型変数の評価回数が多いせいなんだろうか?
2019/07/21(日) 14:22:28.88ID:4aIgjVvla
行数制限でギュウギュウになってしまった。ごめん。
あと呼び出し側もOption Explicitつけてるので。一応。
2019/07/21(日) 16:35:43.80ID:YTBWsrAX0
>>422
そゆこと
説明不足だった
SQLの発行というのは、SQL Server等の外部DBに対して
427デフォルトの名無しさん (ワッチョイ 8f8e-DngZ)
垢版 |
2019/07/21(日) 16:44:43.49ID:zVh3KjUp0
全角文字で書くような馬鹿の後出し言い訳か
2019/07/21(日) 17:18:46.36ID:YTBWsrAX0
なぜかちょうど今やってることと2連続で関係してる
DB編集画面は結局フラグ式にしたけど
自分用なので、ユーザーフレンドリーより処理の単純さと自分的な分かりやすさを取った

文字列連結も改めて整理しようとしてたところ
Midは固定なら速いが、可変だと遅い
■100文字を10万回連結
・固定: 1000万字確保: 0.08秒
・固定: 5億字確保: 2.5秒 (20億字はSpace関数が駄目だった)
・可変: 2万字ずつ拡張: 3.3秒
1000万字だって十分あり得ないし、なんなら2万字でも、実際に拡張する場面はないとは思う

でも心理的にわだかまりが残る
可変の配列は0.3秒だった (ReDim Preserveで後ろへ後ろへ追加、最後にJoin)
ほどほどの固定の超速を取るか、可変の高速を取るか
これも逆に、あり得ない規模でも0.3秒、困る場面はあり得ない
2019/07/21(日) 17:23:37.68ID:YTBWsrAX0
い、言い訳?逆に配列をSQLで操作する方法を知らん
2019/07/21(日) 17:51:10.98ID:tbU/thR+0
>>424
cで言うint left() と string left()を比較してみた
left$()の方が早い、これは予想外だったな

Sub foo()

Debug.Print "str: " & Time()
a = Time()
For i = 1 To 10000000
ToString = Left$("aaaaaaaaab", 1)
Next
Debug.Print "str: " & a - Time()

Debug.Print "int?: " & Time()
a = Time()
For i = 1 To 10000000
ToString = Left("aaaaaaaaab", 1)
Next
Debug.Print "int?: " & a - Time()

End Sub

後は文字列評価だけど、どこが必要でどこが不要かは分からないので何とも言えない
全体見ればどこで最適化したいか分かるかもしれない。後はどれぐらい減らしたいか
一日一回のマクロを10秒→1秒に減らしたいってなら寝る
2019/07/21(日) 19:07:22.36ID:wqzeAX+60
>>422
>>429
やっぱそっちか。
配列にDelete出来たら便利だろうと思ったんだけど。
2019/07/21(日) 21:44:27.38ID:wqzeAX+60
PDFに、AddNewAnnotでテキスト注釈を追加しようとしても、
ポップアップ注釈になっちゃう。
何でだろう?

第2引数には"Text"を指定していて、
Debug.PrintでGetSubtypeを確認しても、間違いなく"Text"と表示されてるのに。
2019/07/21(日) 23:48:26.23ID:wqzeAX+60
↑自己解決

× "Text"
○ "FreeText"

こうだった。
2019/07/22(月) 00:41:41.83ID:sdD1SeGB0
100個くらいのxlsxデータを1つ1つ開かずにセル値を配列に格納させたいんだけど
できるだけ速く処理させるにはどんな方法がありますか?
データベース形式のファイルでないのでADO接続は諦めました。
2019/07/22(月) 00:56:28.70ID:zv/NMHHfx
ExecuteExcel4Macro("'[任意のファイルのフルパス]'シート名!R1C1形式のセルアドレス")で、ファイルを開かなくても読める
2019/07/22(月) 00:57:17.91ID:zv/NMHHfx
処理速度が速いかどうかは分からないけど
2019/07/22(月) 01:02:00.91ID:odzqFd9J0
>>434
優秀な後輩にやらせる
2019/07/22(月) 06:18:13.29ID:GAEqWBnq0
>>428
言語による、処理系の速度の比較

C/C++ のnative・マシン語系 : 100
Java, C# などのコンパイル・中間言語系 : 10
JavaScript, Python, Ruby などの動的言語系: 1

なお、JIT は、フィボナッチ数列・素数などの計算では速いが、普通のプログラミングでは無意味

遅い理由は、I/O, 動的配列(動的コンテナ)などでメモリを動的に確保する、
動的にアドレス計算するなど
2019/07/22(月) 09:27:20.13ID:rxI3cfFL0
Excel VBA の速度は Cの100に対してどれぐらい?
2019/07/22(月) 10:08:13.43ID:DAYqWJvs0
VBAは中間言語方式だけど、内部構造の違いからC#より遅くてJavaよりは速い
441デフォルトの名無しさん (ワッチョイ ff68-ShKg)
垢版 |
2019/07/22(月) 19:19:01.79ID:MenVMjW60
Excel VBAはExcelの評価が入るとすげー遅くなるけど、
EXCELの評価ナシならそこまで遅くない
ただ、vbaで速さを求めるのはナンセンスだと思う
2019/07/22(月) 19:20:20.47ID:x75J2JMa0
>>434
ExecuteExcel4Macroで開かずに読めるが、いちいち開いて読むより速いだけで速いわけではない
2019/07/22(月) 22:17:37.77ID:SAttBB2w0
>>434
そもそもxlsxがzipだからなあ。
読み込みより解凍の方が長いんじゃないかと思うくらい。
444デフォルトの名無しさん (スププ Sd5f-x7W1)
垢版 |
2019/07/22(月) 23:58:25.16ID:ZZbz3w4Ud
>>434
定期的にインデックス化するのは他言語なら常識
2019/07/23(火) 05:29:57.32ID:LmcM+lna0
意外と記憶にないコレクションからの連結
追加時にサイズを記録しといて、最後にぴったりサイズでメモリ確保してMid

(クラス想定)
Public Item As New Collection, Length As Long

Sub Add(Text As String)
 Item.Add Text
 Length = Length + Len(Text)
End Sub

Function Text() As String
 Dim Pos As Long, Var As Variant

 Text = Space(Length)
 Pos = 1
 For Each Var In Item
  Mid(Text, Pos) = Var
  Pos = Pos + Len(Var)
 Next
End Function

配列のJoinは実装のシンプルさがいいんだけど、100字+10万回で0.3秒
こっちは0.15秒という倍の速さで、そこそこシンプル、可変
普通と言えば普通な発想だけど力業のイメージがあって、やってみようと思わなかったのかも

ちなみにFor Eachを番号方式にすると、80秒ぐらいかかってびっくりした
そんな違うんだね
2019/07/23(火) 06:30:29.98ID:LmcM+lna0
>>441
Excelの強みはむしろシートだと思う
ただしデータ処理用ではなく、表示・操作用のグリッドコントロールとして
VSにこんな高速高機能なグリッドコントロールはない、はず(知る限り)

特に CopyFromRecordset の異様な速さ
大量に表示した状態での動きも速い
DBの表示媒体として実は最強だと思う
(他の言語からExcelを呼び出してもいいので、VBA限定ではないけど)
2019/07/23(火) 12:43:05.74ID:Wmp6rbs0M
セルA1からはじまる、5万行30列あるディレクトリツリーを、グループ化したいんですが、
最初のA列のみはエクセルのグループ化でうまくいくけど、B列以降がうまく行きません。
VBAでいっぱつで処理できる方法ってありますか。
448デフォルトの名無しさん (スッップ Sd5f-k2pK)
垢版 |
2019/07/23(火) 13:58:45.14ID:6EIv8bzUd
>>446
何か勘違いしてない?
エクセルが速いなんて全くないんだけど
2019/07/23(火) 14:14:05.21ID:+7TCISw60
>>446
sed や tail などでいい
30GBのテキストも0.04秒で tail できたし
編集も sed は問題なかった

行数上限がない理想的なExcelが将来でても
そういう大きいDBはしんどいんじゃないかな?
2019/07/23(火) 16:29:02.63ID:wjsoV9EZM
つうか普通に10万レコード辺り越えたら遅いだろ
DBを舐めすぎ
451デフォルトの名無しさん (スッップ Sd5f-k2pK)
垢版 |
2019/07/23(火) 16:49:12.46ID:6EIv8bzUd
つうかDBは同時接続数が多くなるほど威力を発揮する
単一接続のエクセルと比較するのがどうかと思う
2019/07/23(火) 18:25:17.72ID:W2R1kWYLd
質問です。

長さAに対して等間隔の点のピッチを計算したい。欲しい答えはピッチ長さ、両端の数字。

条件
両端は同一数値で30以上50以下。ピッチは190以上220以下。
共に50と220の整数に近い数値。

結果
長さ  1200
ピッチ 220☓5
両端  50

こういった計算って結構面倒くさいですか?
関数電卓で計算する分には出来ますがVBAだと全く思いつきません。
宜しくお願いします。
2019/07/23(火) 19:05:35.16ID:de2cQTfB0
>>452
Aの長さによっては絶対に答えが出ない場合があるけど、その時はどうすんの?
2019/07/23(火) 19:07:08.73ID:de2cQTfB0
>>452
Aの長さによっては、答えが2種類出る場合があるけど、その時はどうするの?
2019/07/23(火) 19:23:21.87ID:ToxLFwwH0
>>447
うまく行かないとはどういう状況?

>>452
電卓でもVBAでも他の言語でも考え方は同じ
456デフォルトの名無しさん (ワッチョイ 8f8e-DngZ)
垢版 |
2019/07/23(火) 19:57:04.84ID:vEtQ8tFE0
>>452
馬鹿は死ねや
2019/07/23(火) 19:58:57.06ID:zqVgh/rh0
はい
2019/07/23(火) 20:14:58.52ID:vYgPd/B2M
>>455
同じ文字列なら重複分を消してセルは残して最後にグループ化という感じのをやりたかったのですが、
結局ピポッドでそれっぽいの作成して上司にぶん投げたらOK出ました。
2019/07/23(火) 23:18:29.89ID:M6EwQBh2d
>>453
>>454
Aの値は整数または小数点第1位まで。
優先は
ピッチが整数
答えが出ない場合はエラーメッセージ。
2019/07/24(水) 12:08:14.05ID:/HKiGEdd0
Prelude> let collectPitch = [(t,p,n)| t<-[30..50],p<-[190..220],n<-[1..10], 2*t+n*p==1200]
Prelude> collectPitch
[(30,190,6),(50,220,5)]
Prelude> last collectPitch
(50,220,5)

Prelude> 218*2+50*2
536
Prelude> 220*2+48*2
536

つまり長さが536 の時に (pitch,truncate)=((218,50),(220,48))の
どちらが欲しいのかわからないな
2019/07/24(水) 12:12:04.48ID:Ei3DGN3ud
>>460
ありがとうございます。

220に近い方が欲しいです。
2019/07/24(水) 16:52:46.32ID:8dT07gCiM
>>461
仕様をはっきりさせないから答えが分からない
単純に220から190まで回して両端が指定以内で良いだろ
2019/07/24(水) 17:22:10.81ID:l/M93qCQ0
勤務表の作成目的での使用は可能でしょうか。
50人の職員で勤務時間帯が7種類あり、休み希望や特定の勤務帯の希望があれば絶対にその希望にしなくてはならない。希望を入れたらあとは乱数で勤務表が出来るなんて事は可能ですか?
2019/07/24(水) 17:32:21.73ID:mE96IG5M0
可能。
勤務が集中したりして不満がでたり、法令違反になるような勤務表になる場合もあるが。
当然解無しもある。
2019/07/24(水) 17:46:30.09ID:8dT07gCiM
>>463
そういういい加減な仕様で作っても意味ないだろ
後は乱数・・・でいい訳ないやん
2019/07/24(水) 17:48:18.02ID:leU1oAAPM
>>463
そういうSaaSいくらでもあるから契約しなさい
貴方がゴミを自作するコストよりよほど安上がりです
2019/07/24(水) 17:52:45.82ID:MYVnxp7u0
>>449
「DB」というのは、SQL Server等のDBサーバのこと
Excelを「DB」という言い方したことはないよw

そのDBサーバの内容を動的に転写して、
編集画面として使う場合、Excelが最速ってこと

編集画面なので、元データが100万行あっても、表示するのは人間が作業できる数十行や数百行
根性のある事務員がいると、千行ぐらい一気に扱えるよう要求される場合もある
千行ぐらい行くと、一般のグリッドコントロールでは動作が重くなるが、Excelはすぱっと動く、という話
2019/07/24(水) 17:57:45.46ID:MYVnxp7u0
>>448
>>450
>ただしデータ処理用ではなく、表示・操作用のグリッドコントロールとして>>446
2019/07/24(水) 18:23:13.93ID:WV2r95Zsx
半角先生を彷彿とさせる奇文
本人かもしれんな
2019/07/24(水) 21:41:29.06ID:/T35oaZK0
ユーザーフォーム内にwindows explorerを埋め込む事は可能でしょうか?
windows explorerを個別に動作させたいです
2019/07/24(水) 21:48:43.51ID:nvQWEisZ0
>>470
埋め込むことと個別に動作させることは矛盾してない?
2019/07/24(水) 23:53:52.50ID:/T35oaZK0
>>471
ユーザーフォーム内に複数のexplorerを埋め込んで、それぞれを独立して動かしたいです。
例えば、explorer1、2、3があるとしてexplorer1でディレクトリ遷移したらexplorer2や3はexplorer1に追従しないようにしたいです。
2019/07/24(水) 23:56:23.15ID:/T35oaZK0
>>472
ユーザーフォーム内にexplorer1、2、3がある想定です
2019/07/25(木) 00:09:45.00ID:OfNmjxeUa
>>465
可能は可能なのか。
ありがとうございます。
年数別に分けてどの日も平均年数になるようにする事も可能ということですよね。
2019/07/25(木) 00:16:40.13ID:D8pzUtDE0
>>474
どのプログラムも厄介なのは外界とのやり取り
本当にどんな乱数ひいても仕事は回るの?
476デフォルトの名無しさん (アメ MMc7-HdTi)
垢版 |
2019/07/25(木) 00:33:27.67ID:5qtaCE1dM
>>474
あなたは必要な用件が例えば20有るところ今2つしか言えてない
各自への負荷分散や希望労働時間も考慮すると乱数なんて使わない
仕事分かってない奴は仕様も作れない
2019/07/25(木) 00:35:58.87ID:o8Dlhs3E0
>>472
エクスプローラー3つ起動してWinAPIでウィンドウサイズと位置を常にユーザーフォーム内にあるようにする
しか思いつきませんでした
2019/07/25(木) 00:42:50.48ID:Gl1cJZMi0
作り始めてみないと作れるかどうかなんか分からない
作ってみりゃいい
ダメなら使わなければいいだけ
そうやって上達していく
2019/07/25(木) 01:12:01.57ID:5qtaCE1dM
適当に作って上達って・・
ちゃんと考えなくっちゃ上達なんてない
2019/07/25(木) 02:17:55.08ID:j99gzyNC0
質問です。
セルB2の時間から4時間5秒後の時間をセルC2に記載したいときどのようにコードを書けばいいでしょうか?
セルB2が文字や数字だとC2は""でB2が時間のときだけC2に4時間5秒足したいです。
時間を足すだけなら
range("c2").value = DateAdd("s", 14405 , range("b2")
)と書けばいいのは解るんですが、分岐処理が上手くかけません。
2019/07/25(木) 03:57:32.39ID:04HWMie30
時間の表示形式は?統一されてるの?
482デフォルトの名無しさん (ワッチョイ 068c-0v1+)
垢版 |
2019/07/25(木) 03:58:38.58ID:lnZalLM00
VBA使わずに関数だけでやっちゃだめなの?
2019/07/25(木) 05:26:07.94ID:dATWdLko0
>>463
乱数は偏っているから、使ってはいけない!

例えば、50人の場合、
5人は10回選ばれて、別の5人は0回など、極端になるから
2019/07/25(木) 07:08:49.98ID:AYG483l20
>>480
IsDate でいいんじゃね
2019/07/25(木) 07:54:16.98ID:5qtaCE1dM
VBAはセルの追加削除に追随出来ないから関数で十分なものは関数を使うべき
2019/07/25(木) 11:30:00.12ID:nCaXNWq80
>>476
まあ、必要要件をまとめられないのは、何が必要かもわからないからだよな
それを知るためにも、>>466さんの言っているように専門家と契約するのが
一番コストが低く済むな
自分で作る、このスレで質問するなんて要件難しくて無理だから
2019/07/25(木) 11:52:40.21ID:5L4KGe8+M
なんでお前らが他人の業務心配してんの
回答は
VBAで出来ますよ
で終わりだろ
2019/07/25(木) 12:05:41.30ID:nCaXNWq80
>>487
でも、お前Excelもろくに使えないだろ(笑)
VBA使う意味ないんだよ
2019/07/25(木) 13:27:15.91ID:nCaXNWq80
>>462
もう少しわかりやすく書いてやれよ
数値ピッチを宣言して
ピッチでMaxからMiniまでStep-1で回して
長さとピッチのモッドが60-100に収まればOK
そのピッチの値、ただこれだけ
2019/07/25(木) 13:34:02.88ID:nCaXNWq80
あ、エラーはピッチがMiniより小さかったらエラーだな(笑)
2019/07/25(木) 14:30:07.15ID:a7DwyeCF0
>>477
普通はWebブラウザコントロール使うと思うんだが。
完全に一緒じゃないけど、よっぽど現実的。
2019/07/26(金) 10:59:45.98ID:nW8IFIW60
ExcelVBAのユーザーフォーム上で、PDFを表示、操作をしたいです。
ですが、ユーザーフォームにコントロールを追加しようとすると、
「要素が見つかりません」とダイアログが表示され出来ません。
どなたか解決策をご存じの方がいましたら、教えていただけますでしょうか。。

Acrobat pro DCはインストールしてあり、ExcelはOffice365を最新の状態で使用してます。
2019/07/26(金) 19:39:04.29ID:Mlm4oTrf0
>>492
コントロールってどれ?
2019/07/27(土) 08:56:54.14ID:4Tko0dWk0
バーコードたくさん作って印刷するプログラム作ってるんだけど
一筋縄ではいかないな
いろいろエラーが出て大変だわ
しかもステップインしながら様子みようとすると
中断モードでは入力できません
とやらのエラーがでる
回避する方法はあるようだけどめんどくさそうだ
2019/07/27(土) 08:59:35.78ID:T1jDYlFV0
>>494
バーコードってバーコードフォントがあるから楽勝だよ
気をつけるのは頭の0が消えないように文字列にするぐらい
2019/07/27(土) 09:07:12.15ID:4Tko0dWk0
>>495
それって外部からフォント導入しないといけないやつですよね?
会社のPCでやってるんでだめなんですよね
今はこれ↓を参照して使ってます
Microsoft Access BarCode Control 14.0
重いしエラー出やすいし別の方法があればいいんですけど
2019/07/27(土) 09:09:23.16ID:T1jDYlFV0
フォントの導入も出来ないのか
それはさすがにキツイなぁ
2019/07/27(土) 09:11:52.17ID:T1jDYlFV0
>>496
バーコード 作成 サイト
で検索したら出てきたよ
https://barcode-place.azurewebsites.net/

他にも色々あるから探してみてはどうかな
2019/07/27(土) 09:18:31.74ID:4Tko0dWk0
>>498
ありがとう
でも、そもそもネットすら自由に使えないんですよね
あと、数百個作って印刷するので、ネット経由だと時間かかりそう
お客さんがらみの情報を外に出すことに上の人が嫌がるだろうということを考えると
ローカルで終わる仕組みがないと厳しいですね
2019/07/27(土) 09:23:26.79ID:T1jDYlFV0
牢獄かよwwwww

・フォントを作る。
バーコードは0-9の10個しかない
svgで作ってローカルのhtmlに表示させる
2019/07/27(土) 09:50:59.75ID:9xF62cln0
>>500
バーコードにも色々な種類があってだな。。。
JANコードでも表現できるキャラクターは10種類の数字だけだけど、コードは20種類あって適切に並べないといけないんだぜ
2019/07/27(土) 09:54:25.37ID:4Tko0dWk0
>>500
セキュリティが特に厳しすぎるというよりも、意識が昭和なんですよね
人員削減されるからエクセルマクロつくるなとか面と向かって言う大御所もいるんで
とにかく目立たぬよう、些細な問題であっても起きないよう・・・と神経使うんです

今エラー回避の大きな進展があったのでなんとかこのまま組んでみます

Forで回しながらバーコードを作成・セルに配置していくんですけど
配置したセルの左上にナンバリングするコードを入れるとエラーで落ちるんですよね

バーコードを配置する処理と、ナンバリングする処理を異なるForで分けたらエラー出なくなりました
それ以外のコードは同じなんでなんだか理不尽なのですが、
理屈から攻めるより、多様なコードを試して見てどれがいけるか試して見るという
数打ちゃ当たる的な攻め方をするしかないみたいです
ステップ実行できないのがつらいですが
2019/07/27(土) 13:48:31.18ID:9xF62cln0
>>502
どう考えても自分でバグに気付いてない
オブジェクトの指定が間違ってる可能性が一番高いから、何もかも省略せずにきちんと書いてみ
2019/07/27(土) 14:03:45.48ID:nw7YuAgg0
なんとなく画像のバッファかなんかが溜まってる気がする
screenupdateをtrueにしたまま回すと多分落ちない気がする
2019/07/27(土) 15:48:46.00ID:4Tko0dWk0
>>504
それっぽいのかなと思ってます
起動して初回の処理は何の問題なくいけるんですけど
2回目ボタンを押して別のバーコードを作ろうとするとエラーがでるんですよね
印刷処理が終わった直後にバーコードや連番すべてを削除するコードを置いているんですけど
おそらく何かが残っているんじゃないかと思います

今の所は>>502で書いたように処理を分けることでうまくいってます
原因特定できたわけじゃないんですけどね
全削除のコード自体はそのままなので、ここに問題はないんじゃないかと思っています

ScreenUpdatingはFalseにしても以前のコードだと同じようにエラーがでますね
それだけじゃなくて、実用には耐えられないレベルで遅くなります

>>503
1.もしオブジェクトの指定が間違えているとするなら初回でもエラーがでるだるはず
2.今のコードと、バーコード配置直後にナンバリングするコードでオブジェクトの指定は同じ
なので、やはり原因とするには矛盾があるかな



最終的には、負荷を減らすために、1ページ分バーコードを作ったら
その都度印刷+全削除を繰り返すことで全て印刷するという形で組んでいこうと思っています
バッファ絡みだと嫌な予感もしますが、原因特定はできなくとも、エラー回避方法は特定できてきたのでなんとかなるかなと
2019/07/27(土) 16:22:17.12ID:nw7YuAgg0
>>505
>ScreenUpdating
これは残念
地味に自信があったのにw

>ゴミどうこう
恐らく当たっている
vbaはGC、ガベージコレクション・・要は前の作業のゴミ掃除が貧弱

一番わかりやすいのは、新しいbookをデスクトップが同じフォルダにでも作ってそこで作業させること
コード上は色々とややこしくなるが、大分緩和される

多分一番いいのはVBS、Excel外から作って、Excelをそのたびに再起動させる事
それならまず大丈夫
2019/07/27(土) 17:21:27.70ID:0zw3343k0
こういう問題が出て
https://gyazo.com/6bbc43b5a4346db69404d52e985b0244
https://gyazo.com/faf8012dcb22cdd442c687663f1e7524
セル番地(F10)について、次の問1から問3を解答しなさい。
問1 セル番地(F10)を複合参照で列を固定した答えを記入しなさい。
問2 セル番地(F10)を複合参照で行を固定した答えを記入しなさい。
問3 セル番地(F10)を絶対参照で列と行を固定した答えを記入しなさい。

1,SUM($F5:$F9) 2,SUM(F$5:F$9) 3,SUM($F$5:$F$9)  と解答したら全て間違えてました。
解答が分からないので教えて下さい。
2019/07/27(土) 17:31:16.63ID:nw7YuAgg0
>>507
Excelスレで完全に合ってるから教師に聞けと言われてる奴だろ
一応見直したけど合っている
教師に何が間違っているのかを聞いたほうが良い
2019/07/27(土) 17:37:41.95ID:hapzpDWL0
>>507
スレチ
https://mevius.5ch.net/test/read.cgi/bsoft/1556754363/
2019/07/27(土) 17:39:32.12ID:0zw3343k0
>508
そうです。でも全てバツが入ってました…。
返却されたプリントに、"セル番地(F10)についてここのみで記します"と書いてありました。
自分には意味がさっぱりですが何か分かりませんか?
511デフォルトの名無しさん (ワッチョイ 8a02-tP4r)
垢版 |
2019/07/27(土) 17:52:14.66ID:elOLq8oK0
VBAのフォームのテキストボックス内のフォントサイズが場所によってまちまちなんですが、
どうしたら統一できるでしょうか?
因みに、
テキストボックスのプロパティ(フォント名、フォントサイズ、ボックス高さ)はすべて統一しています。
https://uploader.xzy.pw/upload/20190727174533_466d653379.png
2019/07/27(土) 17:55:18.22ID:0zw3343k0
”ここの外で記します”と書いてあるかも知れないです。先生の字が汚くて読めない…
セル番地(F10)について、ここの外で記します。と書いてあるのでそれがヒントになってると思うのですが。

これを踏まえた上で>>507の解答お願いいたしますm(_ _)m
2019/07/27(土) 17:57:54.34ID:hapzpDWL0
>>511
サイズ違うやつって全角じゃないの?
2019/07/27(土) 18:04:51.46ID:nw7YuAgg0
>>510
このスレをその教師に見せろ
その教師は無能でアホだから何も分かっていない

'以下、その教師に当てる連絡

テメーより何十年も現場で使い倒してる連中が全員正解と言っている
つまらないルールがあるならそれを書け、聞いてやった上で正解を出してやるから書き込め

'連絡、ここまで
2019/07/27(土) 18:04:53.29ID:zfEkdoko0
スレ違いだっていわれてんのになめてんのか?
516デフォルトの名無しさん (ワッチョイ a38e-SsL+)
垢版 |
2019/07/27(土) 18:05:26.47ID:0I7B0fTa0
>>512
死ねや、クズ
2019/07/27(土) 18:06:41.53ID:nw7YuAgg0
>>512
字が汚くて読めないなら聞け
それで何かあれば全部お前の責任だ

>>516
殺すのは簡単だがもう少し成長させろ
2019/07/27(土) 18:08:26.65ID:nw7YuAgg0
>>512
お前みたいなゴミクズが言われたままに従うから教師がつけあがるんだよ
教師に「指示に従いたいが何書いてるか分からないから従えない」
といえば100%回答する
わかるまで聞け
2019/07/27(土) 18:11:07.39ID:X/lrVnpNd
>>514
ここ学校の連絡掲示板じゃないんで
2019/07/27(土) 18:13:50.95ID:nw7YuAgg0
>>519
ここで良い
いいから見せろ
ここでなければ教師は切り取って「あー一部がほえてるだけだHAHAHA」なんていうだけだろう
2019/07/27(土) 18:16:51.94ID:kP1N8Rftd
>>520
スレタイが理解できないなら仕方ないな
2019/07/27(土) 18:51:44.04ID:elOLq8oK0
>>513
数字はすべて全角です
2019/07/27(土) 18:57:28.77ID:1cAkezH+0
>>522
全角やめたほうがいいよ
数字としてプログラムが処理できない

使うとしたらフォトショでクリエイティブな作品を作るときぐらい
2019/07/27(土) 19:03:45.50ID:hapzpDWL0
>>522
ほんとに統一されてるか?されてないから違うんじゃないか?
2019/07/27(土) 23:59:06.49ID:eS9QWMI/M
>>511
どうでもいいかもしれんが、何でシートでやらんの
面倒いだけじゃない
526デフォルトの名無しさん (ワッチョイ 0a2f-aoqV)
垢版 |
2019/07/28(日) 04:39:33.47ID:rLjNQrfA0
>>508
列の合計で。C10:E10が正解って落ちなんじゃ
2019/07/28(日) 09:32:44.25ID:Ao5MhP5V0
> セル番地(F10)を
つまり「$F10, F$10, $F$10」が答えってオチ?
2019/07/28(日) 09:54:38.87ID:UXTeVNdOd
>>527
俺はそう解釈したが。
むしろCとかEとか何処から出てきたん
2019/07/28(日) 12:28:22.02ID:Ln2vM5+c0
>>526
単価バラバラの個数集計して何をしたいんだ?
530デフォルトの名無しさん (ワッチョイ 068c-0v1+)
垢版 |
2019/07/28(日) 15:40:47.61ID:9CPL8aqE0
>>507
>>512
”ここの外で記します”だから
F10以外のセルに記する
すなわちF10以外のセルからF10を参照するにはどのように書けばいいかということじゃない?
1. $F10
2. F$10
3. $F$10
2019/07/28(日) 15:44:43.68ID:sZg+ZdsB0
>>493
Adobe PDF Reader コントロールです。
2019/07/28(日) 16:34:10.62ID:19w4dfv20
>>531
Excelのバージョン違うけど俺も同じエラー出たからWebBrowserコントロールで表示させた
2019/07/29(月) 21:45:38.25ID:CSar0obtd
https://i.imgur.com/7ssVURS.jpg
2019/07/30(火) 10:04:06.46ID:/sOZLFOB0
for i = 2 to 6
Sheet1.Range(cells(i, 1), cells(i, 7)).Value = Sheet3.Range(cells(2, 1), cells(2, 7)).Value
next i
これがエラー吐くんですがどうしてだかわかりますか?
なおコードは簡略化してあります。エラーが出るところだけピックアップしてみました。
2019/07/30(火) 10:21:39.52ID:RYwsY7rK0
セルの結合などで配列が作れないとか?
2019/07/30(火) 10:27:09.85ID:/sOZLFOB0
セルの結合はしてないです
2019/07/30(火) 10:38:34.52ID:7eiKBQzd0
cellsにもシート指定する
2019/07/30(火) 10:56:49.73ID:/sOZLFOB0
流石です。できました!
2019/07/30(火) 11:21:54.97ID:/sOZLFOB0
もうひとつ質問です。
エクセルは24時を越える時間をセルに入力するとセルの頭に1900/1/1とついてしまいますがこれを消す方法はないでしょうか。
具体的には
Range("d2").Value = DateAdd("s", 14405 * (cells(2, 7).Value + 1), cells(2, 3))
とやって4時間の倍数を計算したとき24時を越えると時間の前に1900/1/1がついてしまいます。
これがついたときこの1900/1/1の部分を消したいのです。
例えばright関数を使って右の時間の部分だけとろうとしてもシリアル値がコピーされるのか、上手く行きません。
2019/07/30(火) 11:25:40.51ID:/sOZLFOB0
なお書式設定でhh:mm:;ssとしているので見かけ上はちゃんと時間だけ表示されます。
この時間をソートしたとき頭に1900/1/1がついた時間が後ろに回りこんで困っています。
2019/07/30(火) 12:41:51.17ID:q4AvHDZpM
>>54
> この時間をソートしたとき頭に1900/1/1がついた時間が後ろに回りこんで困っています。
そりゃ24時間超えてるんだから下に来るのは当たり前
取り敢えず簡単にやるなら
Range("d2").Value = Mod(DateAdd("s", 14405 * (cells(2, 7).Value + 1), cells(2, 3)), 1)
の様にして少数部だけにすればいい
ちゃんと知りたいなら
Excel シリアル値
あたりでググってくれ
2019/07/30(火) 19:06:59.93ID:WgMpTdZUd
どれも初心者が陥る有りがちな罠。
中級者以上なら皆知ってる。
2019/07/30(火) 19:48:55.40ID:/sOZLFOB0
>>541
mod関数を使って余りを求める発想は恐れ入りました。
しかし、コピペで上手く動作しなかったので、シリアル値が1以上だと表示されることに注目して
if文を使って1以上ならシリアル値から−1するようにコードを書き換えました。
今のところ上手く動いてますがmod関数を使った余りを求める方法のほうが遥かにスマートなので
試行錯誤しながらmod関数を取り入れてみたいと思います。
ありがとうございました!
2019/07/30(火) 20:02:47.84ID:q4AvHDZpM
>>543
まあ本来modとか剰余とかは整数にしか定義されてないからExcelがちょっと異常だと思ってた方がいいと思うよ
2019/07/30(火) 20:27:28.12ID:AKu0TaFKM
>>544
IEEEの剰余演算知らないのか
素人丸出しだな
2019/07/31(水) 06:47:02.32ID:xZH8peU8M
すきあらばマウンティングとかw
2019/07/31(水) 07:02:37.78ID:Pk+8r5fC0
マウント関数
2019/07/31(水) 13:15:14.27ID:d2gdTfTi0
>>532
やっぱりそうなりますか。
僕も代替策でWebBrowser使ってるのですが、こういうの気持ち悪くて。
WebBrowserだと印刷とか拡大のボタン出てきちゃうし。
2019/07/31(水) 22:27:47.84ID:bMN05+Sd0
時間を24以上にしたいなら
表示形式で[hh]:mmみたいに角括弧つける方法もある
2019/08/01(木) 06:52:12.88ID:dXXftso1M
>>549
ソートするとおかしいと言ってるからそれ関係ない
>>545とかもそうだがチンケな知識自慢はウザイだけ
2019/08/01(木) 22:46:09.22ID:DllCcR/k0
時刻が昇順に見えなくておかしいなら[hh]:mmで昇順に見えるよ
2019/08/01(木) 23:23:27.20ID:nCBAvKB70
コールバック関数をどういう状況で使うのか分からないんですけど、
↓こんな状況で使う、で合ってますか?

Sub Test()

 この中で、関数Aを実行したい場合と、関数Bを実行したい場合がある。
 If文で、関数Aと関数Bを分岐するのは嫌。

End Sub
2019/08/01(木) 23:25:07.45ID:i4bRK0c30
今すぐ実行しないけど、何を呼ぶかは今決めておきたい時
2019/08/02(金) 00:58:24.36ID:EdsLlVlVa
依存関係を逆転するんだよ
AがBを呼ぶ場合、普通はAがBに依存するだろ?
コールバックやインターフェイスを使うことで、AがBに依存しないままでBを呼ぶことができる
それによりAを変更することなくBを別の実装Cに差し替えることが可能になり、Aの再利用性が高まる
まあVBAにはそんな小難しい概念は全く必要ないから忘れていい
2019/08/02(金) 06:30:07.60ID:8FKwQRXt0
コールバックは非同期だとめちゃくちゃ便利だけどvbaみたいに一本の処理が続く言語ではあんまり意味が無い
独自関数のイベントハンドラすら無いなら尚更
2019/08/02(金) 13:06:20.71ID:CGHTW3BLd
コールバックは非常に重要なんだけどVBAで出てくるのはサブクラスやフックなんかの高度な話の時や、コールバック使用を前提とするWin32APIの時だな。
2019/08/04(日) 15:16:30.47ID:5ZS1G+AH0
・Microsoft HTML Object Library
・Microsoft Internet Controls
これらを参照したプログラムを社内で組んで使っています。

ベースとなるIE上のページにあるいくつかのリンク先から必要な情報を
とりだしてワークシートに並べるだけの単純なものです

これまでWindows7(64bit)+Excel2010だったのですが
Windows10+Excel2016に近々移行するという話が出ています

そのまま使い続けられたらいいなと思っているのですが、
何か明らかに問題となるような事項はご存じでしょうか?

自分で組んだものなので、修正はできるのですが、アクセスしにくい場所にあるので
事前に知っておくことができれば対応しやすいなと思っています
2019/08/04(日) 15:50:09.98ID:VJisWwvJ0
>>557
Win10+IEでは、IEのプロセスがしばらく消えなかったり、読み込み完了してもReadyStateがきちんと変化しなかったりで、移行にはかなり苦労すると思われる
俺はすごく苦労した
2019/08/04(日) 17:49:24.07ID:5ZS1G+AH0
>>558
その辺は移行後じゃないと分からなさそうですね
一旦使用中止した上で確認することも考えます
ありがとうございます
2019/08/04(日) 18:18:52.51ID:wM8jMXaC0
IEオブジェクトはそろそろやめた方が良いね
2019/08/04(日) 18:58:46.79ID:6Wul5V0eM
読み込み完了を確実に知る手段がないからなReadyStateあてにならないし
2019/08/04(日) 19:10:37.00ID:wM8jMXaC0
ajaxがあるともう無理
2019/08/04(日) 19:47:17.29ID:VJisWwvJ0
>>561
実は方法はあるんだけど、あんまりスマートじゃないんで他人の使うアプリでは採用しづらい
2019/08/04(日) 21:08:59.72ID:ct85luz10
On Error〜 と Do Loop ?
2019/08/04(日) 21:21:12.54ID:wM8jMXaC0
doloopで取得する方法って無限ループになりそうで怖い
2019/08/04(日) 23:22:30.08ID:wIzeuvQb0
Excelでソースを見られないようにする方法はありますか?
プロジェクトのパスワードはすぐに突破されるので
2019/08/04(日) 23:24:28.94ID:wM8jMXaC0
無いよ
2019/08/04(日) 23:25:56.68ID:wM8jMXaC0
と思ったけどスマン
dllにして読み込む形なら結構行けるんじゃないかと思った
5691=”ー1”、Null=”” (ワッチョイ f5ad-zwOC)
垢版 |
2019/08/05(月) 02:53:35.25ID:nP4zzQcy0
見た目比較、柔らか比較、直観比較、なんて言うんでしょうね?
どうググればいいのか
スレチなのかどうか
VBAに限らず、C#でも結局、空文字連結が最良だった印象
でも問題にしたい基本はExcel VBA

 If A & ””=B & ”” Then

というのは、数字を1セルずつ入力すると数値になるけど、配列でまとめて入れると文字になったり
でも単純に「1」なら「1」なのだとしたい場合

ちなみにCStrはNullでエラーになるので&””の方が便利
便利だけでなく、速度も圧倒的に&””の方が速い
(ちなみにセルのTextプロパティもめっちゃ遅い)

ちなみにセルをString変数に代入してから比較する方が、&””より1〜2割速い
セルにNullを入力しても空文字になるので、セル側には使える
でも用途限定&ソース増えるので、よほどの大量処理で困らない限り、一般的には&””が安定かな

でも昔、「なんで空文字連結してるの?」って誰かに怒られたことがあり、なんとなく後ろめたい
でもテストを重ねるうちに例外に気付き、最初からやっときゃ良かったじゃんとなる

どうなんですかね?
2019/08/05(月) 02:54:38.57ID:nP4zzQcy0
あれ、1=”ー1”ってなんだw
1=”1”ね
2019/08/05(月) 06:35:19.95ID:fZ1grq280
>>569
型変換のために空文字列を連結したり0を足すのは、ワークシート上ではよくやるけどVBAでは避けた方がいい
セルの表示内容を文字列で欲しい時はTextプロパティを使うのがセオリーだし、自分でも書いてるけどString型の変数に代入するべき
2019/08/05(月) 09:21:52.72ID:DamzU/6ud
>>571
Textプロパティは使わねえな。
2019/08/05(月) 11:48:01.13ID:9MgYLk7e0
>>558横からすみません
すごく苦労した部分の詳細や対応策を教えていただけないでしょうか
2019/08/05(月) 13:25:50.95ID:fZ1grq280
>>573
俺が試行錯誤の末に発見したのは、IEオブジェクトのVisibleプロパティが変化するとReadyStateが更新される、ということ
だから

objIE.Visible = False
objIE.Visible = True

という2行を読み込み完了チェックのループに挿入した
あと、IEが非アクティブになるとエラーで止まることがあるので、マクロ実行中は一切さわってはいけないという制約まで付く
ここまでやって、画面がものすごい勢いで点滅するけど、一応の結果は得られるようになった
あと、Win10の次の大型アップデートでIEの動作がまた変わるかも知れないので、いつまでも使える保証がない

JavaScriptやcookieやセッションの管理などが必要なければXMLHTTPを使った方が簡単で確実
575デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/05(月) 14:36:12.11ID:RvbOnux20
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?
2019/08/05(月) 16:28:51.96ID:9MgYLk7e0
>>574さん
ありがとうございます

すごい参考になりました
時々ReadyStateが更新されずDo-Loop抜けずに困っていました
577デフォルトの名無しさん (スッップ Sd43-nSnx)
垢版 |
2019/08/05(月) 18:35:15.20ID:nHSuKmq3d
今でもIEなんて使ってるのお前らだけだろ
あんたの会社はセキュリティとか気にしないんだね
2019/08/05(月) 18:46:21.41ID:u4C0UjsS0
>ここまでやって、画面がものすごい勢いで点滅する
なると思ったけどやっぱりなるんだ

>>577
ブラウザの解釈が必要なところはどうしてもあるんだよ
ただのスクレイピングでいいなら色々な方法があるけどやっぱりキツイ
2019/08/05(月) 19:20:06.57ID:VaXANPIk0
textプロパティ遅いからデータ量が多くない時しか使えない
2019/08/05(月) 19:34:11.66ID:VaXANPIk0
>>569
セルに数字入れたら文字になるというのは、RangeのValueに入れてるからとかでは
2019/08/05(月) 19:55:00.01ID:u4C0UjsS0
>>569
自分一人しか見ないならどっちでも良いよ
他の人への見やすさを考えると関数の方が良い
文字列連結で考えられるのは
・仕様を検索し辛い。str()なら一発で見つかるが、文字列連結によるエラーなどはどう探していいのか分からん
・そもそも何をしているのかも分かりづらい。本来は文字列を入れるつもりだったようにも見える
・この記述でどういうエラーや分岐が発生するか不明。nullやDATE型が入ってる場合など

見た目比較
tostring = Str(1)
tostring = 1 & ""

どうしても使いたいならコメントをつけるなどした方が以下も知れないけどこれもアホらしいな
tostring = 1 & "" '文字列化
2019/08/05(月) 20:12:10.62ID:VaXANPIk0
str(1)は"1"にならない
strは符号付文字列化だから
2019/08/05(月) 20:48:05.94ID:u4C0UjsS0
あぁCstrじゃないとダメなんだっけ
ずっと忘れてたわありがとう
今までのコードかなり間違えてる気がする
2019/08/05(月) 20:55:56.77ID:bZJ9L0Ead
良く使う文字列変数名ってみんなどんな?
2019/08/05(月) 21:21:35.78ID:u4C0UjsS0
名前やら住所やら普通に2バイト変数名使いまくる
2019/08/05(月) 21:29:12.71ID:VaXANPIk0
>>584
ちょっとしたテスト用ならs
それ以外は何の文字列かがわかる名前
2019/08/05(月) 21:48:48.29ID:9MgYLk7e0
>>577
IEの代わりに何を使っているのですか?
2019/08/05(月) 22:39:27.27ID:eFIMT7Jx0
仮にIE使えなくなったら、どうすりゃいいんだろう?
UIAutomationでも使うの?
2019/08/05(月) 23:06:57.61ID:fZ1grq280
>>588
原理上は、EdgeでもChromeでもどんなブラウザでもVBAや外部アプリから操作できる
あとは必要なライブラリのインストールが許可されるかどうかで決まる

とりあえずEdgeは簡単にコントロールできるよ
https://www.ka-net.org/blog/?p=6018
590デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/05(月) 23:11:08.42ID:RvbOnux20
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?
2019/08/05(月) 23:14:43.05ID:u4C0UjsS0
>>590
その操作必要?
二つオブジェクト作れば良いと思うけど、ダメなのか
592デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/05(月) 23:41:12.85ID:RvbOnux20
ウインドウが二つになってしまうんですよ。タブじゃなく。
2019/08/06(火) 01:47:40.96ID:jLnmJ2DC0
DOSは演算子で分かれてるんだよな
==は文字、EQUは数値
&””が高速なら、専用演算子があればもっと高速になるような
ちなみにStrCompも遅いし、Nullはエラーになる

ちなみにDOSもNull問題と似たような<ECHO は OFFです。>問題があって、
やはり”%HOGE%”==””みたいな、文字連結しながらが標準
2019/08/06(火) 01:52:00.75ID:nCnvS7DE0
echo.%abc%
2019/08/06(火) 05:36:32.23ID:GHPQhf970
全角英数字やめようよ
2019/08/06(火) 07:12:51.81ID:vRSgvXkj0
>>589
あまりにコードが長いので、Pythonにするわ。
597デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/06(火) 10:15:51.32ID:AyLoeOe80
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?
598デフォルトの名無しさん (ワッチョイ ad7c-nSnx)
垢版 |
2019/08/06(火) 11:43:42.12ID:fqxmaW9H0
VBAからJavascriptを操作
2019/08/06(火) 12:11:42.24ID:ANeL+6+I0
>>595
半角カタカナもな・・・
2019/08/06(火) 19:08:40.09ID:kWi2YXzG0
zenkaku mojimo yameyouze
2019/08/06(火) 22:24:53.84ID:nCnvS7DE0
Win95のハンカクからゼンカクになった時はえらく間抜けに見えたものだ
2019/08/06(火) 22:44:49.97ID:Uq1zh0Vl0
?
2019/08/07(水) 23:19:02.03ID:OP2ywupH0
JSObjectのaddAnnotで、PDFに注釈付けてるんだけど、
getProps → プロパティ変更 → setPropsで、
何故かtextSizeだけが反映されない。
他の、strokeColorやcontentsは反映されるのに。
何でだろう?
エラーも出ないし。
直接setPropsなら設定出来そうなんだけど、
引数の順番がわからん。
2019/08/07(水) 23:21:30.53ID:OP2ywupH0
↑ちなみに、typeとtextSizeを同時に設定しようとすると、サポートされていない云々のエラーが出るので、
先にtypeを設定してからtextSizeを設定するようにしてる。
2019/08/07(水) 23:49:11.47ID:OP2ywupH0
↑解決はしてないんだけど、おそらくこれしか無いだろうと思われる答えを見つけたので、一応自己解決。

ググったら、海外でも同じ現象が起きている人が何人かいて、
自動翻訳を頼りに調べたら、「そこだけJavascriptで書け」ってのが答えらしい。

なんでだよwwww
2019/08/09(金) 02:28:12.10ID:Sa/tT/Cw0
マウスが滑って列幅やグラフをいつのまにかズラしてしまう心配

ActiveSheet.Protect Contents:=False, UserInterfaceOnly:=True
どうも、Contents:=True にしないと列幅固定できない様子

でも Contents:=False にしないと、
ActiveChart.Axes(xlValue).MaximumScale = 100
こういうのでエラーになる
(DrawingObjects:=True は関係ないっぽい)

とりあず Contents:=False でグラフのズレだけは防止できるので列幅は諦め中
Workbook_SheetActivate で保持して Workbook_SheetDeactivate で戻すとか
そういうことはなんとなくやっちゃいけない気がする
2019/08/09(金) 22:26:35.64ID:6C2oLUnF0
グラフはなぁ・・。
間にDoEvents挟むと収まる謎のエラーとか、ワケワカラン。
2019/08/09(金) 22:39:48.74ID:HA0wV+Cx0
DoEventsはExcelでなんか処理がたまってメモリが爆発するのを回避してるんだろうなぁとかポインタが暴発してるのかなぁとかふんわりと考えている
2019/08/10(土) 15:00:29.70ID:70gCQNsL0
配列に、大量のセルの値を一気に入れると、メモリ不足のエラーが出るけどさ、
行が65536から1048651に増えた時点で、やばいって気づかなかったんかい!
2019/08/10(土) 15:01:14.35ID:70gCQNsL0
すまん、雑談スレと間違えた。
2019/08/10(土) 15:41:05.83ID:UG670C7Ka
VBAは既に非推奨になっていて今後改良されることもExcelの仕様変更に追従することもない
ヤバいとしたら未だにVBAを使っていることがヤバい
2019/08/10(土) 16:12:09.58ID:6zXh0uMNM
Excelに標準でついてるから使ってるだけ
2019/08/10(土) 16:39:23.75ID:uXgY3OKMM
>>611
>VBAは既に非推奨になっていて
詳しく
2019/08/10(土) 19:55:14.58ID:Um+tCRmgr
Excelにpythonが載るらしい事と関係ある?
2019/08/10(土) 20:56:10.58ID:JqqZRPld0
乗らないよ
アドインで作るならpythonせもC3でも書ける
2019/08/12(月) 08:16:20.47ID:rWCvfjYy0
環境の仕様上、仕方なくexcel_vbaからedgeを操作するコードを書く必要があります。
ieのようにcom?ole?オートメーションより操作する方法が用意されていないことが分かりました。

結果的にwebdriver経由以外は操作不可という認識です。
>>589の方も書かれている通りなのですが、
楽をする意味でもseleniumbasic+webdriverの組み合わせが最善なのでしょうか?
617デフォルトの名無しさん (スプッッ Sdfa-k+MG)
垢版 |
2019/08/12(月) 08:43:02.45ID:jMLB7Ls7d
>>616
Javascriptにしとけって
なんでわざわざ難しくするのか理解出来ない
2019/08/12(月) 08:49:36.79ID:pwPFXa0Y0
jsを管理ツールにぶっこんで動かすほうが100倍早そう
619デフォルトの名無しさん (ワッチョイ 7df1-6/mF)
垢版 |
2019/08/12(月) 09:35:57.54ID:DZttgA6c0
Jacascriptならタブブラウザのタブにページを追加することはできますか?
2019/08/12(月) 10:01:18.74ID:pwPFXa0Y0
>>619
一行
window.open('http://www.yahoo.co.jp', '_blank');
2019/08/12(月) 10:03:33.42ID:1s6J+agPa
「環境の仕様上、仕方なく」って
そんなに難しい日本語だっただろうか?
JavaScriptは理解出来ても日本語が弱いなら
とりあえずJavaScript板から出て来るなと
622デフォルトの名無しさん (ワッチョイ 7df1-6/mF)
垢版 |
2019/08/12(月) 10:06:01.90ID:DZttgA6c0
>>620
ありがとう。ところでVBAからJavascriptはどうやって呼び出すのですか?
2019/08/12(月) 10:15:28.94ID:pwPFXa0Y0
>>621
回答してあげれば?

>>622
あぁ、すまん
JavaScript疑似プロトコルを使うのが楽だと思う
https://www.vba-ie.net/ie/javascript.php

「IE(InternetExplorer)のJavascriptを実行するサンプルコード」
の部分

要はURLに
javascript:〜
とjsコードを書いてページ遷移させようとするとコードを実行できる。もちろんページ遷移はしない
2019/08/12(月) 15:17:47.26ID:w42U52pdd
>>616
COMオートメーションで操作できる。
Edge内の部分にIE相当がいる。
2019/08/12(月) 15:22:43.84ID:w42U52pdd
internetexplorer_serverがその部分。
2019/08/15(木) 07:57:00.06ID:itT4sC0lp
IEページ内の特定文字の表示されたリンクをクリックする簡便な方法ありませんか?
2019/08/15(木) 08:19:26.16ID:itT4sC0lp
>>626
漠然としすぎてたので少し補足します
すでに開かれたIEで、
特定の文字列の入ったリンククリック
特定の文字列の入ったボタンクリック
ラジオボタンクリック
検索窓に文字入力
ダウンロードボタンをクリックしDL画面から保存
この流れを実行したいですどうかお助けください
2019/08/15(木) 09:22:54.15ID:C/2yP5k80
そういう自動化は自力で調べてやるもんだ
2019/08/15(木) 10:02:29.24ID:pn7G4suB0
その程度ならちょっとググれば全部出てくるでしょ
このへん一通り読んだら?
https://www.vba-ie.net/
http://www.ken3.org/cgi-bin/group/vba_ie.asp
2019/08/15(木) 10:07:22.52ID:1u/FSOBg0
簡便ってどのレベルかわからんけど、
getelementsbytagname("タグ名")(0).clickより簡単なのは知らん。
2019/08/15(木) 12:35:46.51ID:itT4sC0lp
>>627
なんとか途中までは出来ました、ありがとうございます
ただ、ダウンロードダイアログが出るまで待機する処理がわかりません、おたすけください
2019/08/16(金) 01:00:49.86ID:R9HO/Wkcp
>>631
ダウンロードウィンドウ出るまで待機&出たら保存クリックのやり方がどうしても思いつかない・・
633デフォルトの名無しさん (ワッチョイ 298e-2nrJ)
垢版 |
2019/08/16(金) 03:05:47.27ID:mEybPnb20
>>631
馬鹿丸出し
2019/08/16(金) 10:08:51.17ID:2LlAcZB1d
URLDownloadToFile使えないのけ?
2019/08/16(金) 10:17:36.89ID:2/+GjR180
>>632
ダイアログが出るまで、ループ中にFindWindowとSleepを入れて待つ。
2019/08/16(金) 10:23:09.43ID:MTb2pfw1M
よーしパパ同じ名前のウインドウ別プロセスで立ち上げちゃうぞ
637デフォルトの名無しさん (ワッチョイ 292c-fkm4)
垢版 |
2019/08/16(金) 11:14:05.14ID:T8TNcgJH0
2019/8/14配信のWindowsUpdateを適用すると、Windows 7/8.1/10(全バージョン)で、

・VBVisual Basic 6 (VB6)で作成したアプリケーション
・Visual Basic for Applications (VBA)で作成したマクロ
・Visual Basic Scripting Edition (VBScript)で作成したマクロやアプリケーション

が応答しなくなり、『invalid procedure call error.』と表示される場合があるという
不具合が発生している模様。

WindowsUpdate 2019年8月度 注意事項と各KBメモと直リンク [Update 4: VB関連死亡]
http://blog.livedoor.jp/nichepcgamer/archives/1074802426.html
2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
http://blog.livedoor.jp/nichepcgamer/archives/1075495666.html
2019/08/16(金) 12:33:15.26ID:cw5RArPO0
>>637
> 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
> http://blog.livedoor.jp/nichepcgamer/archives/1075495666.html

この記事で、Win10のバージョンと不具合の生じたKBの対応表があり、
https://i.imgur.com/gyz63Lm.jpg
先日(8/14)のアップデートが正に該当KBだったが、
https://i.imgur.com/4jCXivm.jpg
試しにExcelのVBAを実行したところ、何の問題もなく実行できた

記事をよく見ると、
 「invalid procedure call error.』と表示される場合があるという不具合が発生しています」

『表示される場合がある』だから、マクロを作りまくってるところは確認が大変だろうねぇ
2019/08/16(金) 13:23:21.28ID:weKSkgAm0
会社のツールやばい…
640デフォルトの名無しさん (アウアウエー Sae3-SXVW)
垢版 |
2019/08/16(金) 13:47:25.09ID:mZqFzvyqa
スレ勃った
【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
https://asahi.5ch.net/test/read.cgi/newsplus/1565930238/
2019/08/16(金) 14:06:13.60ID:MTb2pfw1M
普通企業だといきなり素でwindowsupdate当てなくね?
wsusとかsccmとか使うでしょ
2019/08/16(金) 17:22:38.96ID:WXGx/ZZ40
>>641
ちょっとした企業ならそうだね
まあ直接MSにつないでアップデートする不届き者がいたりするけどw
2019/08/16(金) 17:27:01.26ID:k7tPUw8I0
windows10の強制アップデート阻止できんの?
2019/08/16(金) 17:50:52.66ID:7ZUhNgED0
ParamArrayが死ぬみたいだな
https://software.opensquare.net/relaxtools/archives/3603/
2019/08/16(金) 17:58:09.50ID:cw5RArPO0
>>643
10 Proなら手動更新に変更できる

【Win10】 Windows10 Proの自動更新を無効にして手動更新にする方法
〜更新プログラムの有無だけ自動確認編〜
http://blog.livedoor.jp/nichepcgamer/archives/1069099391.html
2019/08/16(金) 23:13:44.62ID:OVA1KWrl0
>>634
URLないので使えないと思われます
>>635.636
馬鹿なのでもう少しkwskお願いします・・お願いします・・
2019/08/17(土) 07:54:34.24ID:8I/+NAgPM
いまホットな話題のParamArrayについて誰か詳しく
2019/08/17(土) 09:45:42.30ID:kME64/ZP0
>>647
このあたり見てわからんのならあきらめろん
https://www.google.com/amp/s/excelwork.info/excel/paramarray/amp/
2019/08/17(土) 09:49:36.55ID:8I/+NAgPM
可変長引数のキーワードということで理解しました
650デフォルトの名無しさん (ワッチョイ 292c-fkm4)
垢版 |
2019/08/17(土) 11:27:09.01ID:A2kuY6Eb0
VB6、VBA、VBScriptの不具合の件、MSが対応策を取ったことで>>637の2ページも更新された。
Windows7はKB4517297、Windows8.1はKB4517298を手動ダウンロード後、適用で修正。
Windows10は、v1903/v1809/v1803が8月下旬、v1703/v1607/v1507は数日中の修正予定。
v1709のみ8月17日公開のKB4512494で修正された。
2019/08/17(土) 12:36:18.52ID:ZiMaCmm00
レポおつです。
652デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/17(土) 15:54:42.36ID:iIHdaZG00
VBAでもPythonでもないなら何を推奨してるんですか?ExcelマクロはVBAでやるしかないんだけど。Excelを使うなってことかな。
2019/08/17(土) 15:55:45.89ID:HLb3E5lg0
質問です。以下のようにArraylistにPersonを5つ、それぞれ1から5の番号をつけて追加して、そのあとセルに表示というコードなのですが、
Dim per As Person
Set per = New Person
を、Dim per As New Person に一行でまとめるとセルの出力が全部5になってしまうのですが、
これはどういった理屈なのでしょうか?
一行でまとめて書いていたのでこの仕様に気づくまでかなり苦戦してしまいました、、


'--------------------標準モジュール------------------------
Sub test()
Dim col As Object
Set col = CreateObject("System.Collections.ArrayList")
Dim i As Long
For i = 1 To 5
Dim per As Person
Set per = New Person
per.num = i
col.Add per
Next
For i = 1 To 5
Cells(i, 1) = col.Item(i - 1).num
Next
End Sub
'--------------------------ここまで--------------------------

'----------------------クラスモジュール(Personクラス)-----------
Public num As Long
'----------------------------ここまで--------------------------
2019/08/17(土) 16:26:09.37ID:zNYQ6gFwM
https://sites.google.com/site/kanaetechwiki/vba/-vba-newtokonsutorakutanitsuiteno-zhu-yi-shuki

この辺が分かりやい?かも
宣言時にnew書くと変数の初回参照時に暗黙的にインスタンスが作成される

質問の例だと宣言時newにした場合、インスタンスはループ初回に一回しか作成されなかったものかと
2019/08/17(土) 16:36:08.32ID:kME64/ZP0
>>653
Dimはスコープに入った時に1度だけ実行されるらしい
https://thom.hateblo.jp/entry/2018/06/02/185716
2019/08/17(土) 16:52:36.35ID:HLb3E5lg0
>>654-655
なるほど、一行だとpersonが一つしかインスタンス化されてないからコレクションの中身が全部
同一のpersonを指していたのですね、、
またDimの仕様も初めて知りました
VBA特有なのでしょうかね
ありがとうございました!
657デフォルトの名無しさん (ワッチョイ 5994-OqLs)
垢版 |
2019/08/17(土) 19:14:32.76ID:RXxx1rXC0
VBAなんて死亡で何も問題にない
やっと消えてくれて良かったよ
MSグッジョブ!
658デフォルトの名無しさん (ワッチョイ 4901-yBk9)
垢版 |
2019/08/17(土) 20:27:14.12ID:TTG1tsty0
>>657
VBA使わなかったらExcelは何を使って動かすの?
659デフォルトの名無しさん (ワッチョイ 1342-DuLZ)
垢版 |
2019/08/17(土) 20:50:19.45ID:N2s/0hZJ0
夢と情熱で動かせばいい
2019/08/17(土) 21:05:24.35ID:He41kTu90
Excel 使わず perl python R などということでは?
2019/08/17(土) 21:06:33.10ID:zNYQ6gFwM
任意の言語でExcelObjectをCreateするんやで
662デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/17(土) 21:32:02.44ID:iIHdaZG00
事務職がある限りExcelはあるし、事務員はPython出来ないからExcelマクロしかない。VBだから安くて済むのに事務員もPythonやるようになれば給料が高騰するな
2019/08/17(土) 21:42:22.66ID:Fw+V3P9r0
>>646
待つのはこんな感じ。

Do
 戻り値 = FindWindow(ダイアログのクラス名, ダイアログのキャプション)
 Sleep 1000
Loop While 戻り値 = 0

>>636みたいな嫌がらせをうけたら誤爆するけど、まあ普通はないでしょう。
2019/08/18(日) 11:00:31.17ID:C1gx08WLd
PythonがExcelに搭載されていないとデメリットが大きいので使わんよ。
665デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 11:09:28.84ID:4FW1F7ZHd
エクセルに古臭いVBAしかない理由って知ってる?
アップデートもなけりゃ最新言語に対応もしない本当の理由知ってるか?
2019/08/18(日) 11:14:54.55ID:FqYQ2+OrM
知ってるよ
667デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 11:40:45.27ID:4FW1F7ZHd
マジィ?
2019/08/18(日) 12:00:07.61ID:T9/88dVq0
鮫島事件が絡んでるからな
669デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 12:20:01.35ID:VmB6zVS1d
鮫島よりペルシチェネンコ事件だろ
670デフォルトの名無しさん (ササクッテロラ Sp85-yBk9)
垢版 |
2019/08/18(日) 12:21:49.45ID:bLuo7bGBp
>>665
Excel自体にそこまで需要がないから。最新言語を対応させても得られる利益は変わらない
2019/08/18(日) 12:54:47.98ID:XgJSnVlI0
Excel自体の需要はあるやろ…
無職かよ
2019/08/18(日) 13:06:20.90ID:T9/88dVq0
Excelに需要がないは草
673デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 13:22:03.41ID:fr36iN96d
VBAに需要がないのは間違いない
誰にも必要とされてない
お前らの独りよがり
じゃなきゃコミュニティも盛り上がるはずだけど全く超低空飛行
674デフォルトの名無しさん (ササクッテロラ Sp85-yBk9)
垢版 |
2019/08/18(日) 13:31:43.08ID:bLuo7bGBp
Excelマクロなんて事務員くらいしか使わない。マクロを使わなくてもいいようなシステムを開発したらいいだけ。企業はマクロよりRPAを使うようになってきてる。
2019/08/18(日) 14:20:33.70ID:/SWswUk70
末端の人がパーフェクトに便利さを感じられるシステムを
会社が構築してくれたらいいんだけど
実際はそういうわけには行かないわけで
隙間をうめるためのお手軽自動化ツールとしてVBA使う事になる
うちではそうだわ
VBAがなかったらクソくだらない作業を手作業でちまちまやらないといけなくなる
676デフォルトの名無しさん (ワッチョイ 1394-OqLs)
垢版 |
2019/08/18(日) 14:49:48.58ID:IrH+YuBi0
VBAなんて使わない方法を考えたら?
もう世間は誰もVBAなんて見向きもしてないから現状はこうなんだよ
いつまでも昔のやり方を変えないのもどうかと思いますよ
時代に合わせよう
2019/08/18(日) 14:54:23.89ID:DpEllfNwM
Excelに付属してるから管理が厳しいところでも配布しやすいから使ってるだけ
時代も何も使えなくなったら代替手段探すだけのこと
2019/08/18(日) 14:55:25.23ID:D/c0fmWr0
個人的なものは好きにできるが、仕事の場合それはできない
2019/08/18(日) 15:27:12.36ID:C1gx08WLd
>>673
...。
働けよw
2019/08/18(日) 15:27:45.78ID:C1gx08WLd
>>674
もっとヒデェじゃね―かw
2019/08/18(日) 15:28:27.65ID:C1gx08WLd
>>676
働こうw
682デフォルトの名無しさん (スップ Sd33-OqLs)
垢版 |
2019/08/18(日) 17:09:34.94ID:VGD+ydi8d
クソ言語にしがみ付くなって
VBAなんて将来性もゼロの全く価値のない子供向けのお遊びコード
2019/08/18(日) 17:11:35.43ID:Onid3Fuw0
子供のおもちゃが企業で使われているので
コチコチ頭の上司たちが変わるまでは仕方がない
2019/08/18(日) 22:03:42.03ID:fdTZq+Kkp
>>663
ありがとうございます!
明日職場で試してみますね。
2019/08/18(日) 23:03:48.28ID:VOTiyLwud
>>682
それもう20年前から言ってるぞ
2019/08/19(月) 00:03:40.71ID:s+b3eGRm0
>>684
ミスると永久ループになるので、n回トライしてダメならExit Doするようにする。
分かってると思うけど念のため。
2019/08/19(月) 01:54:47.41ID:8cX0ZsGs0
ゴルゴかよ
688デフォルトの名無しさん (ワッチョイ 291a-b/Zd)
垢版 |
2019/08/19(月) 18:24:33.37ID:YB9Wg1qd0
ExcelもPythonで動かせるようになるんでしょ?
2019/08/19(月) 18:31:08.40ID:1gWkLKQh0
結論から言うと純正はMSとしてのPython搭載計画は無いJavaScriptはあるらしい

https://qiita.com/yniji/items/b38bc312e860027108ac
2019/08/19(月) 19:04:43.88ID:dIBRQUcza
まーPythonが使えるようになると
一挙に統計の計算で出来ることが増えるようになるらしいけど
お前らObject指向すらままならないのに
関数型言語なんて覚えられるの?
691デフォルトの名無しさん (スップ Sd33-OqLs)
垢版 |
2019/08/19(月) 19:11:40.32ID:I77Hqr4od
無理
そんな事が出来るなら今どきVBAなんて使ってない
2019/08/19(月) 19:27:03.18ID:KJlIhGbm0
>>690
Excel自体がオブジェクトなので
cells(1,1).value="foo"
だけでも立派にオブジェクト指向
問題はオブジェクトを操ってる感覚が少なすぎることかもな
2019/08/19(月) 19:28:39.19ID:KJlIhGbm0
pythonはpandas辺りの数学系ライブラリがめちゃくちゃ便利なだけで言語としては至って普通だと思う
2019/08/19(月) 19:40:05.21ID:+1Fs+fGnM
本体に付属するなら何でもいいよ
2019/08/19(月) 19:56:47.47ID:kG35/yIv0
>>689
これのどこを読んだら「マイクロソフトが Excel に搭載するのは JavaScript であって」なんて出てくるんだろう?

Cool to see the excitement around Python.
We had an awesome response to our survey on the Python UserVoice item. We’re working on the best way to address that feedback.

・In the meantime, these are some great tools you can use like PyXLL and XLWings
・Additionally, you can also host your backend logic via a web service in any language, including Python, and you can use web add-ins or a custom function to call that web service.
2019/08/19(月) 20:48:52.44ID:mQFW2r4sd
>>690
逆だ。
どんな環境でも対応出来るからVBAでやってる。
他の環境になったら対応すればいいだけ。
2019/08/19(月) 20:57:32.17ID:nwpYw8PQ0
>>693
でも、普通に書きにくい
698デフォルトの名無しさん (ワッチョイ 1394-OqLs)
垢版 |
2019/08/19(月) 21:10:37.00ID:hlBLM62K0
今出来てない奴の典型的な言い訳だな
2019/08/19(月) 22:25:52.74ID:azaBJJ3f0
Pythonのどこらへんが関数型言語なんだ
700デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/19(月) 22:38:19.44ID:yJROWsyT0
VBAが出来ればPython簡単でしょ。プログラミング何も知らなくても一か月あれば覚えれるし!
2019/08/19(月) 22:40:28.20ID:WV8MsfnG0
haskell と間違えた?
2019/08/19(月) 23:00:47.92ID:s+b3eGRm0
hellshake矢野と聞いてすっとんで来ました。
2019/08/19(月) 23:06:13.11ID:/B6DUDSo0
初心者質問ですいません。
下のコードで、Range("V3:V8")だと何事もなく範囲を指定できるのですが、
Range(Cells(…),Cells(…))だとエラーが出てしまいます。
何が悪いのでしょうか?

Worksheets("シート1").Activate

ActiveSheet.ChartObjects("グラフ1").Activate

ActiveChart.PlotArea.Select

ActiveChart.SeriesCollection.NewSeries

ActiveChart.FullSeriesCollection(1).XValues = Worksheets("シート2").Range("V3:V8")

ActiveChart.FullSeriesCollection(1).Values = Worksheets("シート2").Range(Cells(3, 3), Cells(8, 3))
2019/08/19(月) 23:14:40.96ID:0TFEcX9a0
>>703
シートを指定せずにセルを指定してるから
2019/08/19(月) 23:16:02.88ID:0TFEcX9a0
シート名.Cells
2019/08/19(月) 23:19:13.86ID:Kd4gHXGIM
なんのCellsかを指定せんと
2019/08/19(月) 23:22:23.07ID:/B6DUDSo0
あー、そういうことでしたか!
初歩的なミスですね、、ありがとうございました!!)^o^(
2019/08/20(火) 10:43:23.94ID:Lb9pYe6wM
すいません、もうひとつ助けて頂けると嬉しいです。

ActiveChart.FullSeriesCollection(1).Name = Worksheets("シート2").Cells(3, 3)

で、参照先のセルにはユーザー定義にて"8月19日"のように◯月◯日形式で表示させていますが、
グラフ凡例には2018/8/19のように表示されてしまいます。

凡例にも参照先のセルと同じように◯月◯日形式で表示させる事は可能なのでしょうか?
2019/08/20(火) 11:09:16.51ID:rI3Ok1/U0
左辺よくわからんけどString型っぽいから
Worksheets("シート2").Cells(3, 3)を
Worksheets("シート2").Cells(3, 3).textにするとか
2019/08/20(火) 11:34:51.82ID:gC7P9E5oM
>>708
グラフ側に、書式も合わせる設定なかったっけ
2019/08/20(火) 14:41:48.00ID:zjWJczhSd
>>708
Format(Worksheets("シート2").Cells(3, 3).Value,"MM月DD日")
712デフォルトの名無しさん (スプッッ Sd33-OqLs)
垢版 |
2019/08/20(火) 19:07:42.10ID:a4NGfQR+d
この程度の事も解決出来ないなんてセンス無さすぎだから職を変えた方が良い
2019/08/20(火) 20:10:24.14ID:Lb9pYe6wM
>>709-711
ありがとうございます!なんとか出来ました!
助かりました〜、思い通りに走ってくれて嬉しい〜
2019/08/20(火) 20:11:19.07ID:Lb9pYe6wM
>>712
最初は誰もが皆初心者という事で許してくださいませ!
2019/08/20(火) 20:40:08.64ID:rBqV29v90
>>714
そいつただの荒らしだから相手しなくていい
2019/08/21(水) 14:26:40.58ID:3vArKtvAM
VBAとVB.netの違いって何?
2019/08/21(水) 14:30:54.32ID:4OnBvdVtM
なんだろうね
ググってみるとわかるかもしれない
2019/08/21(水) 15:08:20.30ID:3vArKtvAM
やかましい
719デフォルトの名無しさん (ワッチョイ 298e-2nrJ)
垢版 |
2019/08/21(水) 16:13:42.94ID:DR/m4EzU0
ID:3vArKtvAM

ゆとりの馬鹿は早く死ね
2019/08/21(水) 16:17:07.75ID:fu57+dJz0
>>716
「.net」ドットネットというのは便利な関数がめちゃくちゃたくさん入ってる箱
マイクロソフトががんばって作った

それがVBから一発で呼び出せるように準備されてるのがVB.net
別にVBAからでも使おうと思えば使えるけど調べるのが大変
2019/08/21(水) 17:27:53.89ID:gVbfBf0Fd
>>720
その説明は...
ちょっとマズいんじゃね?
2019/08/21(水) 20:02:36.72ID:G939Yiu90
>>716
VB.netをOffice特化にしたのがVBA
2019/08/21(水) 20:07:15.59ID:gVbfBf0Fd
>>722
オイオイw
2019/08/21(水) 20:16:48.70ID:UWHhP4Rfa
それでいいよ
VB.NETの方が早く消滅しそうだし
2019/08/21(水) 20:27:43.70ID:u1HjpT+T0
VBAはPython以上に難しい。
2019/08/21(水) 20:51:45.74ID:lLmU49+5M
いやいや、VB6そのものだし
2019/08/21(水) 21:27:40.88ID:UWHhP4Rfa
歴史的経緯を知らないと理解できない変な制限や仕様が多い
そういう意味ではかなり難しい
2019/08/21(水) 21:36:56.28ID:yHZlY2VU0
というか単純に古すぎる
2019/08/21(水) 22:58:52.93ID:6FMyMBWp0
Python vs Excel 五番勝負 - 仕事で使えるのはどちら? 2019/08/21 14:37 クジラ飛行机
https://news.mynavi.jp/article/zeropython-53/

第一回戦 - どちらが気軽に使えるか?【判定】気軽に使えるのは、Excel。ただし、
Excelは有償。また双方ともWebブラウザからも使えるなど利便性は互角。
第二回戦 - CSVファイルが見やすいのは?【判定】美しく表示されるのは、Python。
ただし、Excelは汎用用途に特化しているのに対して、PythonライブラリがCSVファイルの
読み込みに特化していることが理由。
第三回戦 - グラフが作りやすいのは?【判定】引き分け。マウス操作で直感的に操作
できるのはExcelだが、Pandasやmatplotlibのライブラリに習熟していれば、Pythonでも
簡単に描画できる。
第四回戦 - 複雑なグラフが作りやすいのは?【判定】引き分け。
第五回戦 - 集計してみよう【判定】処理が複雑になればなるほどPythonが優勢。
2019/08/21(水) 23:06:25.04ID:t1IwCgGE0
>>727
> 歴史的経緯を知らないと理解できない変な制限や仕様が多い
32KB縛りとかあるけど、言うほど制限多いか?
具体的に数件挙げてみてくれる?
731デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/21(水) 23:17:16.37ID:ou2s2vhN0
事務職がPythonやり始めたら自分でシステム作って回せるからシステム屋なんていらないよね
2019/08/21(水) 23:49:02.48ID:yHZlY2VU0
>>731
と思うだろ
ネットワークにセキュリティにハード等次々と恐ろしい壁が立ちはだかる
極めつけは社内のお局さま
「いままでこうやってきたから」
2019/08/22(木) 01:27:44.72ID:Oq4Y6cV40
セキュリティはプロに委託しないとまずいだろ
あれ対人戦だから
2019/08/22(木) 07:51:00.42ID:UEI1uExP0
>>732
それ
最後の1行
それで全てが終わるんだわ
2019/08/22(木) 12:34:15.51ID:MtNZNIvl0
そういう問題じゃないな
インフラこそ企業による差異もなく誰がやっても同じで雑事として他人任せでいいもの
経験値がないとスパゲッティ化して要件変更に対応できなくなったり、直せなくなったり
あるいは処理速度、使いやすさ(業者にも上手い下手あるが)
そもそも業務要件自体がSEが入らないと整理できなかったり、入って初めて抜けが発覚したり

「作れるか否か」と「言語仕様」に相関があると思ってるのが素人
もし「作れる」なら、他の言語でも作れたはず
736デフォルトの名無しさん (ワッチョイ 417c-rPVV)
垢版 |
2019/08/22(木) 12:59:21.66ID:+daqT/kh0
5Gになるとハードとかネットワークとかクラウドで利用出来るようになるから、個々でハードを所有する必要がなくなってくるんでしょ
簡単なシステムはコーディング不要でドラッグするだけで出来る物になるらしいじゃん
2019/08/22(木) 13:52:14.29ID:NYoYWugdM
アホなの?
738デフォルトの名無しさん (ワッチョイ cd32-CeWy)
垢版 |
2019/08/22(木) 16:49:43.11ID:e9q5rHyL0
VBAでは函数は呼び出すところより後に置く必要があるの?
C言語では呼び出すところより前に置く必要があるのに。
2019/08/22(木) 17:01:00.58ID:zDN55lmE0
グローバル変数を先頭に書くルールはあるけど関数位置のルールはないよ
2019/08/22(木) 17:24:07.32ID:dzgR3llR0
>>739
そうですかあ。助言してくださってありがとうございました。
2019/08/22(木) 19:47:58.63ID:/1dDo18xM
>>738
> C言語では呼び出すところより前に置く必要があるのに。
前で定義すればプロトタイプ宣言がいらないって言うだけのこと
プロトタイプ宣言書いとけば前後関係はどちらでもいい
742デフォルトの名無しさん (ワッチョイ 417c-rPVV)
垢版 |
2019/08/22(木) 20:53:37.47ID:+daqT/kh0
個人でPCを所有する時代も終わるし、全部クラウドで出来るから、AI作れるくらいじゃないと稼げなくなるよ

VBAなんか動けばなんでもいいんだよ。自分のルールでやればいい。
勉強しても事務職が自動化されてExcelももうすぐ終わるし無意味。
743デフォルトの名無しさん (ワッチョイ fa42-atfx)
垢版 |
2019/08/22(木) 21:04:36.03ID:/rs88TGh0
いつかはそうなるかもしれないけど今は違うんで
2019/08/22(木) 21:13:59.00ID:RtlLQzNd0
>>742
今から「時代が終わる」日まで飲まず食わずで過ごすの?
2019/08/22(木) 21:18:50.86ID:gvlSFTC4d
全くVBA触ったことない人間です
以下の内容ってVBAで実行可能でしょうか?
できるなら独学で地道にやってみようかなと思っていまして…

■現状
サイトから売上データをDLし、指定のシートにコピペ×10サイトほど

■やりたいこと概要
データDLだけでも自動化したい

■やりたいこと詳細
1.サイトにログインする(ID・パスを入力)
2.必要項目をプルダウンやチェックボックスから選び、CSVダウンロードボタンを押してデータをフォルダに格納する(あるいはVBAとおなじエクセル内にシート別でコピペ)

できるかできないかだけでも教えていただけませんか…?
2019/08/22(木) 21:21:39.93ID:UEI1uExP0
VBAってメインのシステムを補って、カバーしきれなかった隙間を埋めるものっていう認識があるわ
おれが作ったプログラムで一番重宝されてるのが
メインのシステムを使うに当たってミスした場合、数百の修正を手作業で一時間以上かけて
しなければならなかったものを10分程度で終わらすことができるようにしたものだわ

メインのシステムは本社レベルで作られているものだから俺のいる地方支店ごときが
口出しできるようなものじゃない
でもVBA使えば工夫次第で補正できる
747デフォルトの名無しさん (ワッチョイ 417c-rPVV)
垢版 |
2019/08/22(木) 21:34:47.45ID:+daqT/kh0
>>744
先を見て他の事を学べって事だよ。ずっとこの処理方法なんでとか言ってるアホなお局と同じだぞ。
748デフォルトの名無しさん (ワッチョイ 417c-rPVV)
垢版 |
2019/08/22(木) 21:38:29.30ID:+daqT/kh0
>>745
出来るよ。PythonとかJavaScriptでも出来るし、RPAならもっと簡単に出来る。VBAでマクロ作るのに2時間かかるとしたら、RPAならそのマクロなら10分で組める。
2019/08/22(木) 21:59:47.62ID:gvlSFTC4d
>>748
10分!?プログラミングできる人って本当にすごい…
RPAちょっとググってみる
ありがとう!
750デフォルトの名無しさん (ワッチョイ ce8c-F52R)
垢版 |
2019/08/22(木) 22:04:42.34ID:7qmldPJo0
RPAっておいくらのRPAの話なのかな
2019/08/22(木) 22:52:02.20ID:f0ZUKfAs0
>>745
出来るけど、出来ると思ってるのが凄い。
VBA触ったことない人は、そもそもエクセルでエクセル以外のものを動かせるとは思わない。
752デフォルトの名無しさん (ワッチョイ cd8e-2c6d)
垢版 |
2019/08/22(木) 23:05:11.29ID:8fzFyZRc0
>>751
馬鹿に言っても無駄
2019/08/22(木) 23:40:59.76ID:bojKrn/j0
Ruby, Selenium WebDriver で、Chrome などのブラウザを自動操作すれば?
漏れは、下のように、yahoo とか、あちこちにログインしてる

driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym";

driver.manage.window.maximize # 画面最大

element = driver.find_element(:id => "username")
element.send_key "ここに、ユーザー名"

driver.find_element(:id => "btnNext").click # ボタンを押す

element = driver.find_element(:id => "passwd")
element.send_key "ここに、パスワード"

driver.find_element(:id => "btnSubmit").click # ボタンを押す
2019/08/23(金) 00:38:10.95ID:Mge9VVN2d
>>742
20年前に同じことを聞いたw
2019/08/23(金) 00:40:39.32ID:Mge9VVN2d
>>748
VBAでも10分位で出来るけどな。
まあ、オブジェクトまでのツリーを取得する自作ツールが有るからなんだが。
2019/08/23(金) 00:42:06.51ID:Mge9VVN2d
>>753
何で余計なもんをインストールする必要のあるもんを勧めるんだよ。
2019/08/23(金) 00:51:38.55ID:FLxS3jQ80
Excel, VBScript, PowerShell などで、IE を自動操作できたっけ?

そもそも漏れは、有料のExcel を持ってないからw
2019/08/23(金) 00:55:38.21ID:EpwxKHRY0
何でこのスレに居るの?
そしてIEの操作にExcelは関係無いよ?
2019/08/23(金) 00:57:13.74ID:hZ3rvHOB0
>>757
「IE を自動操作」で今すぐ検索!!
2019/08/23(金) 10:14:25.17ID:li1Mh2OPM
>>757
いつの時代から来たんだ?
まあ、常に初心者はいるんだが、初心者がだっけとは言わないだろうw
2019/08/23(金) 13:19:10.67ID:Mge9VVN2d
>>757
Excelだけで出来る。
2019/08/23(金) 22:34:11.94ID:VDLlcRP00
仮に専用の関数が無かったとしても、
最悪、SendKeysでどうにかなりそうだが。
2019/08/24(土) 14:52:42.02ID:PMKXSgkW0
VBSだけでInternetExplorer.Applicationからかなりの事ができる
ただしIEに対応してないサイトでは使えないので今からやるならpythonとか使った方が良い
それとExcelとは何の関係もない
2019/08/24(土) 17:07:42.16ID:YNEEa1VEM
1と2行目の間に新たに行を挿入し、
そこに別のセルからデータを貼り付ける。
という作業を行いたいです。

相対的に記録することによって、
作業したい行の1列目のセルを選択した状態でマクロを実行すると望む動作ができるマクロを作れました。

これを1から2000行目くらいまで繰り返したいです。

現状は、
1行目を選択してマクロ実行、
3行目(間に行を入れたので、元2行目です)を選択してマクロ実行、
と手動でやるしかない状態です
よろしくお願いします
2019/08/24(土) 19:19:46.76ID:pPYobWUl0
2000行あって、その全ての行間に1行ずつ挿入(データ貼り付け)?
上からじゃなくて下からやっていけば行番号ずれない

具体的には・・・・↓
766デフォルトの名無しさん (ワッチョイ cd8e-2c6d)
垢版 |
2019/08/24(土) 19:46:04.47ID:tfdPm5hj0
「1から2000行目くらいまで」
こういう書き方しかできない頭の出来を治せばできるよ
2019/08/24(土) 20:18:08.93ID:iSxknok+0
カーソル下に二つ動かすとこまでマクロ記録すればいい
2019/08/24(土) 20:56:51.54ID:uDF3Dyif0
PDFから文字を抽出する時、
PDTextSelect.GetTextだと文字化けすることがあるんだけど、
文字化けしない方法ない?

素直にWordかExcelに変換しろよって思うだろうけど、
レイアウトがアホたみいなPDFなので、
AcroExCh.HiliteListで座標を調べながら抽出したい。
769デフォルトの名無しさん (ワッチョイ 417c-rPVV)
垢版 |
2019/08/25(日) 00:24:58.63ID:0CQCtKXC0
>>768
エンコーディングに問題があるために正常に文字列として抽出できない状態です。
PDF変換をOS XのQuartz経由で行っているのが原因でしょう。
画像に変換してからテキスト抽出するのがいいでしょう。
770デフォルトの名無しさん (スププ Sd9a-MGS/)
垢版 |
2019/08/25(日) 08:41:11.09ID:OUvv1Qufd
そんな事をVBAでする必要ある?
お前らが良く言う適材適所はどうなった?
2019/08/25(日) 09:59:52.06ID:vWh3PKjN0
>>769
いや、書式ごとコピーすれば文字化けしないから、
取り出し方の問題だと思ってる。

>>770
何ならいいの?
会社のだから、好き勝手インストールできないので、
VBA、VBS、JSくらいしか選択肢無いんだけど。
2019/08/25(日) 11:12:17.03ID:lhXU2LAa0
Acrobat入れて貰えるならもうちょっと頑張ろうぜ
2019/08/25(日) 11:15:37.82ID:wuTzbvLf0
Acrobatってphotoshopみたいにjs使えなかったっけ
VBAでPDFはしんどいだろう
774デフォルトの名無しさん (ワッチョイ 417c-rPVV)
垢版 |
2019/08/25(日) 12:11:56.92ID:0CQCtKXC0
Excelに落とし込むならVBA。事務の現場ではでjsをメンテできる人は少ないから会社では使えない。
VBAでやる必要があるかというよりも、システムに頼むと金も時間もかかるし、環境的にExcelしか使う方法がないという感じだよ。
2019/08/25(日) 12:25:55.53ID:BUsnCBPl0
>>764
その望む動作をするマクロをforで指定行まで2行ごとに繰り返す
2019/08/25(日) 18:55:03.24ID:vWh3PKjN0
>>773
使える。
というか、実際VBAだけじゃきついので、VBAの中で使ってるわ。
tmp = "var tmp = ○○○"みたいな、変な書き方になるけど。
2019/08/25(日) 19:15:04.48ID:wuTzbvLf0
>>776
evalみたいに使っているのね
それが正解だと思う
778デフォルトの名無しさん (ワッチョイ 417c-KNIi)
垢版 |
2019/08/27(火) 21:43:59.58ID:12PwAtNh0
Excel VBAだけでDBの構築って出来ますか?出来るとしたらどんな方法がありますか?
2019/08/27(火) 21:54:06.25ID:WoMQ7lMm0
ないよ
たった行列が10億だか100億程度で上限があるから
2019/08/27(火) 21:55:12.05ID:l/owAi2u0
シートにテーブル作ればいいだけじゃないかな
2019/08/27(火) 22:09:51.27ID:sJEUu/BYa
あ、そういう質問なの?
てっきりOracleとかMySQLのインストールやセットアップ、テーブルセッティングをキーストロークとかで自動化したいって話だと思った
2019/08/27(火) 22:10:09.55ID:oi7M6oV+0
>>779
まるでDBサーバには制限がないみたいな物言いだな
783デフォルトの名無しさん (ワッチョイ cd8e-2c6d)
垢版 |
2019/08/27(火) 22:19:55.46ID:OQSCjaIT0
馬鹿にマジレスか
784デフォルトの名無しさん (ワッチョイ 21cf-Q35w)
垢版 |
2019/08/27(火) 22:55:47.76ID:6Z6gO9EQ0
Excel 2007/2010で不思議な現象に出くわしています

以下のコードを標準モジュールに書きます

Sub main()
  Cells(1, 1).Interior.Color = vbRed
End Sub

Alt + F8で「main」マクロを実行すると「A1セル」が赤色に塗られます

ところが

function main()
  Cells(1, 1).Interior.Color = vbRed
  main = ""
End function

このような関数を作り、ワークシート内で使用すると
「#VALUE!」が戻ってきてA1セルも赤色に塗られません。

「Cells(1, 1).Interior.Color = vbRed」の箇所をコメントアウトすると関数は正常に動作します
Functionプロシージャ内部ではセルの背景色を変えるなどの処理は出来ないのでしょうか?
785デフォルトの名無しさん (ワッチョイ 417c-KNIi)
垢版 |
2019/08/27(火) 23:05:57.02ID:12PwAtNh0
初心者で申し訳ないんですけど、Excelだけだとシートにテーブルを作って、VBA でデータ入力したり、更新したりするってことなのかな
DBっていうとAccessとか使うしかないってこと?
2019/08/27(火) 23:09:31.93ID:sJEUu/BYa
DBってなんの話ししてるかまじでわからん
エクセルをデータベースのように使いたいって話し?
2019/08/27(火) 23:18:51.14ID:l/owAi2u0
>>785
入力とかシート上でできることはわざわざVBAでしなくてもいいんじゃないの、入力フォームが欲しいとか言うんでなければ
2019/08/27(火) 23:21:53.49ID:l/owAi2u0
複雑なデータ抽出とか更新処理はVBAでやらないと大変なんじゃないかね
2019/08/27(火) 23:25:26.42ID:8LX/iGEV0
DBを構築して何をやりたいのか
2019/08/27(火) 23:44:42.74ID:Jze2yq7b0
adodbやadox使えばaccess買わなくてもmdb使えるし
MS-SQLExpressなんかもタダで使える
791デフォルトの名無しさん (ワッチョイ 417c-KNIi)
垢版 |
2019/08/28(水) 00:58:46.20ID:5ekiJuZi0
>>790
ありがとうございます!これのことだと思います。調べてみます
2019/08/28(水) 00:59:49.87ID:v0kWonca0
>>784
その通り、ワークシートから呼び出された関数からは別のセルは加工できない仕様になってる
2019/08/28(水) 03:05:45.46ID:Ttu8EBlV0
>>784
状態変える処理やるとそこで強制終了するね
エラーでキャッチもできないし
794デフォルトの名無しさん (スプッッ Sd9a-MGS/)
垢版 |
2019/08/28(水) 10:32:02.44ID:i0zGkAfmd
Excel以外は会社の縛りで入れちゃダメって設定だったろ?
2019/08/28(水) 11:04:52.35ID:xlt6w80MM
>>794
( ゚д゚)ポカーン
796デフォルトの名無しさん (ワッチョイ cd9b-iCeB)
垢版 |
2019/08/28(水) 12:15:47.11ID:2Ou8kvzb0
>>792-793

Cells(1, 1).Interior.Color = vbRed を

Cells(1, 1).Font.Color = vbRed

にすればちゃんと動くんだがなあ

残念
2019/08/28(水) 13:03:44.86ID:lngkMUR1d
>>794
普通はAccessも入ってるもんだが。
2019/08/28(水) 13:06:36.95ID:lngkMUR1d
>>796
実施後にセルの色を変える処理を呼び出せば少し高度だけど可能。
SetTimerを使う。
2019/08/28(水) 18:08:37.69ID:5E+IOBSnM
>>797
Access外す所多いよ
800デフォルトの名無しさん (ワッチョイ fa94-MGS/)
垢版 |
2019/08/28(水) 20:25:09.97ID:ljeEb3Lh0
DBと言われてaccessだと思う人って少ないよね
2019/08/28(水) 21:11:17.18ID:CSbIlVLR0
>>800
でしょうね
でも、DBのフロントエンドなら私としては断然ACCESS

office365に移行した会社増えてるみたいだから、実は使えるようになってますって人もいるんじゃないかな
2019/08/28(水) 21:14:21.69ID:V6K8kQhZM
DBと言えばaccessと思う人って多いよね
2019/08/28(水) 21:17:52.13ID:KZSjYbkvM
そしてデフォルトで使ってうっかり誤操作してデータ壊すまでが洗礼
トランザクションとは
2019/08/28(水) 22:59:00.75ID:AiVdwxrR0
DBZ
2019/08/28(水) 23:22:20.08ID:QYwDb2se0
>>802
エンジンはWindowsに標準で入っているから
メモ帳があれば使えるDBだし
2019/08/28(水) 23:31:35.60ID:tqyYzyWN0
DBがOS標準で入ってるのは知ってるんだけど
じゃあaccessって何のために存在しているの
2019/08/28(水) 23:37:37.32ID:QYwDb2se0
フォーム、レポート、クエリーエディタ
データシートビューでも連結テーブル表示できるし
Excelと違って型チェックする必要ないから楽だぞ
2019/08/28(水) 23:42:20.06ID:CSbIlVLR0
>>806
DBだけじゃないから
2019/08/29(木) 02:07:43.21ID:HAQEZgo2x
PowerQuery使えばいいのに
810796 (ワッチョイ 619b-4hip)
垢版 |
2019/08/29(木) 09:59:11.11ID:VCulxt3G0
> Cells(1, 1).Interior.Color = vbRed を
>
> Cells(1, 1).Font.Color = vbRed
>
> にすればちゃんと動くんだがなあ

と書いたが、Excel2007だとダメだな
やっぱFunctionプロシージャ内でセルの状態を変化させるのはご法度ということか

>>798
SetTimer調べてみたけど想像も付かん
良ければ教えて下さい
811デフォルトの名無しさん (ワッチョイ 1b8c-OHvC)
垢版 |
2019/08/29(木) 11:59:18.65ID:5gorWdce0
>>796
>>798
どういうこと?
具体的な例をにfunctionから貼ってくれ
2019/08/29(木) 14:14:31.26ID:unFZw31s0
>>784 >>810
Excel のユーザー定義関数の制限について
http://support.microsoft.com/kb/170787/ja
2019/08/30(金) 09:41:25.60ID:Jl3VomiYM
相互参照をアクティブにする方法はどうしますか?

book1でbook2のとあるセルの値を取得、
book1でその値を元に計算した結果のセルをbook2で参照して取得したいです。
両方のブックを開いてるとリアルタイムで連動しますがbook1を閉じるとbook2が連動しなくなってしまいます。

何とかしてbook2だけ開いてても動くにはどうすればよいですか。
2019/08/30(金) 09:56:38.22ID:GG5C7GdFr
csvから特定のカラムを取得してレポート用資料作成をしたいです
それぞれ値を取る際にFormatしたり、キーを取って別シートを参照して値取ったりしてますここらへんをfunctionで纏めて呼び出し元に返したいのですが、複数の意味ある値を返す際どういった形式にするのが良いのでしょうか
リストだと煩雑すぎますし利用する際に中のデータ構造を正しく理解する必要があるので辛いです
815デフォルトの名無しさん (ワッチョイ a991-cmxz)
垢版 |
2019/08/30(金) 10:17:51.52ID:PgWDE7Wr0
>>810-811
ちょっと余計なことを言ったかなと反省している。
SetTimerは使い方を間違えるととても危険なので、
仕組みが分からない人は使わないほうが良い。

Private Declare Function SetTimer Lib "user32" _
(ByVal hWnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" _
(ByVal hWnd As Long, _
ByVal nIDEvent As Long) As Long
Private rngTarget As Range
Public Function main()
Dim hWnd As Long
hWnd = Application.hWnd
Set rngTarget = ActiveCell
Call SetTimer(hWnd, 1, 100, AddressOf TimerProc)
End Function
Private Function TimerProc _
(ByVal hWnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Select Case wParam
Case 1
rngTarget.Value = ""
rngTarget.Interior.Color = vbRed
Call KillTimer(hWnd, 1)
End Select
End Function
2019/08/30(金) 13:25:34.95ID:APUVZm9H0
>>815
おお素晴らしい

質問ですがTimerProcの引数はどこから渡されてるのでしょう?
ネットのサンプル見ると引数なしにしてるのが多いようですが
2019/08/30(金) 19:47:25.71ID:x/QGo0CV0
>>813
リンク更新じゃだめなん
2019/08/31(土) 09:16:24.02ID:4NYR4ZtbM
>>817
相互参照だから開いてない方のbookの値が更新されないんです

【book1】
A1=book2.A1
A2=A1*2
【book2】
A1=1
A2=book1.A2

こんな感じになってて、book2だけ開いてる状態でA1を2にしたらA2が4になるようにしたいです。
2019/08/31(土) 09:24:05.84ID:APli5DXY0
片方のbook開いたら他方のbookも裏で開くようにするしか
820デフォルトの名無しさん (ワッチョイ 619b-4hip)
垢版 |
2019/08/31(土) 09:39:57.73ID:VV+Xb8B+0
VBAは奥が深くて面白いね
でもすでに同じ構文のVB6が終了して19年
いつまでExcel VBAは前世紀の言語仕様で戦い続けるんだろうね
2019/08/31(土) 09:56:21.35ID:4OmVCRqb0
西暦2100年 そこにはいまだにVBA を書く社畜の姿が
2019/08/31(土) 10:01:54.51ID:4NYR4ZtbM
>>819
こんな感じにデータベースファイルみたいなのが100個くらいのbookに分かれてるんですよね
それを1個のbookで参照・集計してアナライズしたいんですけど
自分で書いててアレなんですけどやっぱ明らかにexcelでやることじゃないんですよねーwwもうどうしようかしらん
2019/08/31(土) 12:03:18.46ID:lSinYyRY0
>>820
デカくて潰せない会社と同じ
批判はあっても存続
他言語導入でも併存

他言語になっても、新たに覚え直す程の魅力がなければワザワザ移行しない
そんな言語があるとも思えない
824デフォルトの名無しさん (ワッチョイ d168-7DQc)
垢版 |
2019/08/31(土) 13:10:01.15ID:VMH9fC9A0
もう既に基本的なことはpythonのopenpyxlで叩く方が楽だけどなw
2019/08/31(土) 13:27:16.71ID:XD/oUD8U0
pythonは入れだけでつらいから
2019/08/31(土) 13:54:41.11ID:uJ0dNnnu0
>>818
まず、kore互いに参照し合う構成にすること自体が間違ってる
book2のA2はbook2のA1*2でいいんじゃないのか
2019/08/31(土) 13:56:14.97ID:uJ0dNnnu0
Excelは互いに参照し合う構成にすること自体が間違ってる
2019/08/31(土) 14:33:22.19ID:4NYR4ZtbM
>>827
book1に1日目のりんごとみかんの売り上げ個数が書いてある
book2に2日目のりんごとみかんの売り上げ個数が書いてある

book3で1日目と2日目のりんごとみかんの売り上げを表示したい、またbook3で書く売り上げに用いる消費税というパラメータを定義してある

こんな構成の時ってどうすればいいの?
今はbook1とbook2でbook3の消費税パラメータを参照して計算して、book3で計算結果を吸い上げてる
2019/08/31(土) 14:39:04.14ID:4OmVCRqb0
横からだが、その構成途中で値上がりしたときにやばくないか?
2019/08/31(土) 14:41:09.90ID:uJ0dNnnu0
>>828
book3が最終形態ならbook1とbook2から個数を参照してbook3で料金計算
2019/08/31(土) 14:58:39.86ID:4NYR4ZtbM
>>829
例えなので、実際は単価が上がることはなく、種類は100種類程度のデータです。
book3で全日付のデータ吸い上げて1日の売り上げ個数をbook3の別シートに仮保存して計算というのもしましたが、
日数分だけシートが増えてくので、。
欲しいのは売り上げ金額だけなので、無駄なデータは増やしたくないのですが・・
2019/08/31(土) 15:29:32.08ID:uJ0dNnnu0
>>831
なら尚更構成見直した方がいいと思う
なんであっち見たりこっち見たりするんだ…
2019/08/31(土) 20:18:57.86ID:7dtMEd8i0
教えてください
ctrl+cでセルを値でコピーするのと同時に、セルか文字に色をつけたいのですがなかなか作れません
ヒントあれば教えて下さい
2019/08/31(土) 20:25:39.22ID:uJ0dNnnu0
>>833
色だけコピーしたいと言ってんの?
2019/08/31(土) 20:38:21.36ID:7dtMEd8i0
>>834
いえ、コピーしたセルがわかるように色付けしたいです
2019/08/31(土) 20:44:10.45ID:/30jKMss0
>>833
マクロを
・色付
・コピー
にしてショートカットに登録

ctrl+cではなくそのショートカットでコピーする
2019/08/31(土) 20:51:57.67ID:mwn+tPL8M
>>832
どう見直しても解決出来そうになくて・・
そんなに特殊ケースでもないと思うのですが、世間の人々はどんな構造にしてるのでしょうか。
2019/08/31(土) 20:52:51.76ID:7dtMEd8i0
>>836
ありがとうございます。
ctrl+cでやるのは無理なんですか?
2019/08/31(土) 21:41:30.00ID:lSinYyRY0
>>838
作ったマクロを ctrl+cに割り当ててみ
2019/08/31(土) 21:44:06.08ID:uJ0dNnnu0
>>837
日報と同じファイルに単価とか共通の固定データ用のシートを1個作る
日報がどんなレイアウトか知らないが↓みたいなのと仮定する
      8/1 8/2…
 りんご 
 みかん
sumifで1日分の個数を取得×Vlookupで単価取得
個数のファイル名はyyyymmddとかにして数式コピペできるようにしとく
2019/08/31(土) 21:46:45.55ID:uJ0dNnnu0
日報て集計用のファイルな
842デフォルトの名無しさん (ワッチョイ 618e-H6Z7)
垢版 |
2019/08/31(土) 23:13:48.46ID:E/xtib8g0
>>833
死ね、クズ
2019/09/01(日) 02:37:04.86ID:f6WC1Fpm0
>>842
すみません
2019/09/01(日) 04:01:41.09ID:raK4RKwa0
コピーはCtrl+Cだけとは限らないからクリップボードを監視して
対象のシートがアクティブな間に状態が変わったら選択セルに色を付けるだけ
個人で使うだけなら適当でいいんじゃないの
2019/09/01(日) 13:44:49.90ID:oYMe9uNQ0
Ctrl+Cでやりたいと言ってるんだから面倒なことしなくていいと思うが
2019/09/03(火) 17:37:57.38ID:O78IIFeuM
A1を始点に行方向に5,列方向に4の間隔で格子状に存在するセルの先頭の文字だけを赤くしたいのですがどうやれば可能ですか?
2019/09/03(火) 17:50:49.52ID:7wvhOHEP0
>>846
Sub Macro1()
  For r = 1 To 100 Step 5
    For c = 1 To 100 Step 4
      Cells(r, c).Characters(Start:=1, Length:=1).Font.Color = vbRed
  Next c, r
End Sub
2019/09/03(火) 18:00:40.88ID:MrrInpM90
今日、Excelの表で手動でソートしてたら変な挙動が現れ、原因が分からず困ってしまい…

まず、「状況」列に、「完走」と「未達成」のデータがあるのですが、
この列を昇順ソートすると、「未達成」の上と下に「完走」が分かれてしまいました
もちろん降順ソートも同様です

で、この上下の「完走」を別のシートにコピペで貼り、挙動をチェックしてみましたが…
 https://i.imgur.com/FXwnn0h.jpg

上のリンクでも書いていますが、文字自体はif文でもフィルターでも同一扱いです
(ソートの時だけ、なぜか違いが出ています)

思い当たる違いは入力の仕方で、手打ちしたものとマクロ(VBA)で入力した違いがあります
マクロを作って以降はマクロで入力してますが、それ以前のデータは手打ち&コピペで入力しました

とりあえずの対処法として、マクロで入力した文字を全てにコピペすればこの問題は解決しますが
今後のこともあり、なにか見落としている点や抜本的な対策がないか、
何かアドバイスを頂ければと思い質問しました。

なお、これは仕事とかじゃなくて趣味でやってるものです
あと、使ってるのは Excel2007 で、ちょっと古いバージョンです

以上、よろしくお願いします
2019/09/03(火) 18:37:10.54ID:Nde2KJgsM
>>848
ふりがな?
2019/09/03(火) 19:03:22.22ID:MrrInpM90
>>849
それでした!

「Excel、ソート、ふりがな」でググると出てきました
https://whiteleia.com/%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB-%E4%B8%A6%E3%81%B9%E6%9B%BF%E3%81%88-%E3%82%BD%E3%83%BC%E3%83%88-%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84-%E6%BC%A2%E5%AD%97/

Sortオブジェクトで並べ替えを実行する
http://officetanaka.net/excel/vba/tips/tips148c.htm

いろいろ見てみると、Excelでソートをする際の(隠れた?)重要事項のようですね
(見えない「ふりがな」で漢字も正しくソート!、親切な機能ですが…やめてくれ〜!!)
2019/09/03(火) 19:08:44.32ID:EgS4pbLB0
>>850
大を「おおきい」で変換するか「だい」で変換するかで位置が変わるのと同じやね



大 (おお)


大 (だい)
2019/09/03(火) 19:09:53.69ID:Sk67xQLY0
シュワルツ変換じゃないんだな
やばいね
2019/09/03(火) 19:30:59.43ID:Nde2KJgsM
>>850
デフォで ONなのがあかんよね
2019/09/04(水) 03:28:35.08ID:PLINbL3A0
ふりがなは集計とかで計算が合わない原因の1つ
非常にヤバイ
855デフォルトの名無しさん (ワッチョイ 138a-SEqO)
垢版 |
2019/09/04(水) 04:06:51.76ID:5yA34Y3d0
俺ならorder byでソートするわ。
856デフォルトの名無しさん (ワッチョイ 138a-SEqO)
垢版 |
2019/09/04(水) 04:06:51.76ID:5yA34Y3d0
俺ならorder byでソートするわ。
857デフォルトの名無しさん (ワッチョイ 138a-SEqO)
垢版 |
2019/09/04(水) 04:10:04.07ID:5yA34Y3d0
あ、勝手に2回書き込まれた。
2回押したわけじゃない。(時間が同じ)
2019/09/04(水) 06:58:53.39ID:PNtZQbdAM
同時にマルチポストするスクリプトのテストなんでしょ?わたししってます
859デフォルトの名無しさん (スッップ Sd33-SEqO)
垢版 |
2019/09/04(水) 09:41:13.02ID:1XDrwIL8d
それ何の意味があるの?
2019/09/04(水) 21:10:47.96ID:4b6r0UgTM
utf8でテキストファイルを読み書きするにはADODB.Stream使うしか無いんですか?
861デフォルトの名無しさん (ワッチョイ 618e-MFs0)
垢版 |
2019/09/04(水) 22:19:41.54ID:ypD8R0G80
>>860
お前にはできないだけ
2019/09/04(水) 22:43:43.48ID:eueOikzy0
>>860
テキスト取り込み機能の、文字コードの選択肢に、
普通にUTF-8入ってるけど。
2019/09/05(木) 05:41:49.26ID:1Vq29uWMM
>>862
詳しく
2019/09/05(木) 19:27:53.95ID:Y46IXGuk0
>>863
データ → テキストまたはCSVから → テキストファイル選択 → インポート → 元のファイル「65001:Unicode (UTF-8)」

バージョンによって、多少表記は違うと思うけど。
2019/09/05(木) 20:11:50.19ID:ETKINaX/M
>>864
ありがと、試してみる。

utf8でファイルへ書き出す方法はある?
ADODB.Stream以外で。
2019/09/05(木) 21:14:36.97ID:1LX1rV/Ud
>>865
なぜDODB.Streamを避ける?参照設定ならVBAで追加できるぞ
2019/09/05(木) 21:28:31.64ID:ETKINaX/M
>>866
ゴメン、それをここで議論するつもりは無いんだ。
utf8でテキストファイルを読み書きするにはADODB.Stream使うしか無いのか知りたいだけ。
2019/09/05(木) 21:35:39.87ID:AYUgwyUQM
言い直す。
utf8でテキストファイルを読み書きするのにADODB.Stream以外の方法があれば知りたい。
2019/09/05(木) 21:37:45.62ID:AYUgwyUQM
言い直す。
utf8でテキストファイルを読み書きするのにADODB.Stream以外の方法があれば知りたい。
870デフォルトの名無しさん (ワッチョイ c242-lFt8)
垢版 |
2019/09/05(木) 21:39:34.16ID:r8X2uJ+M0
大事なことなので
2019/09/05(木) 21:47:14.25ID:9Uy9y8wC0
こだわりって奴か
2019/09/05(木) 22:05:29.23ID:b7YXu5Qf0
どんな方法でもいいのなら、文字コード変換プロシージャを自作すればいい
変換テーブルはネットに落ちてる
2019/09/05(木) 22:10:54.25ID:znSNwXKPd
>>868
APIで変換できる
ADODB.streamも内部では同じAPIを呼んでるはず
http://www.t-net.ne.jp/~cyfis/win_api/sdk/MultiByteToWideChar.html
2019/09/05(木) 22:29:23.75ID:O7Dd9aK6M
.netのライブラリ呼び出すとか?
ADODBを避けたい理由がわからんけど
2019/09/05(木) 22:37:00.77ID:Y46IXGuk0
違う視点で調べてみるとか、
UTF-8じゃなくて、中国語をどうにかしたい、とかさ。
2019/09/06(金) 01:25:28.43ID:FBYj/dPB0
>>868
方法はいくつもある
無料のWebAPIもあるし、コマンドラインでnkfを呼び出したり、テキストボックスのプロパティをいじったり
あとは理由、目的、条件などをはっきりさせてくれないと話の続けようがない
877デフォルトの名無しさん (スッップ Sd62-lqLo)
垢版 |
2019/09/06(金) 09:13:01.42ID:O65UzHn9d
参照とかAPIとか事務のおばちゃんには難しいのでは?
VBAを使う理由って何もさせてくれない設定だったよね?
2019/09/06(金) 09:20:07.41ID:gf8OtXpgM
何設定って
ぼく働いたことないから実態わかりませんてこと?
2019/09/06(金) 12:46:48.43ID:ahR83v0/M
・2列の一致する組み合わせを数える方法(ex.A列に野菜B列に果物が書かれている時AがトマトかつBがりんごの行をカウントしたい)

・数式の結果の文字の先頭を色付けする方法(ex.A1セルに【=IF(条件式,"☆優先","▽後回し")】が入力されていてその結果の文字の先頭の記号だけを色付けしたい)

この2つのやり方教えてください。
2019/09/06(金) 13:17:28.93ID:wexWW75+0
>>879
対象範囲をForで回して評価します。
式で表現されたセルの部分文字列の書式を違えることは出来ないんじゃ?
2019/09/06(金) 13:22:25.08ID:VV0t0tnJd
>>879
最初の方は何をしたいのか意味が分からない。
トマトが野菜かどうかはどうやって判定するの?

2番目の方は数式の結果はそのセルのValueで取れるから数式関係無くね?
VBAでやりたいのか数式でやりたいのかも不明。
882デフォルトの名無しさん (ワッチョイ 498e-+nLs)
垢版 |
2019/09/06(金) 13:24:03.74ID:pGSSTaC/0
馬鹿の書いた仕様にマジレスか
2019/09/06(金) 17:23:07.64ID:3tzNx51ir
>>881
トマトが野菜かは関係無いだろ
2019/09/06(金) 17:29:43.22ID:3ebQC5Nor
for each c in [a2:a20]
if c.value & c.offset(,1).value ="トマトりんご" then cnt =cnt + 1
next
msgbox "うんこ"
2019/09/06(金) 17:45:39.03ID:/iE3LfT+a
トウモロコシは野菜?
2019/09/06(金) 18:20:35.01ID:krEGpr0B0
トマトは野菜だがフルーツトマトはフルーツである。○か×か?
2019/09/06(金) 18:51:20.65ID:5B1pyUbX0
O}
2019/09/06(金) 21:07:32.81ID:tM0YpD6Hd
オーノー
2019/09/06(金) 21:47:07.49ID:bVYWhMbTd
>>881
このスレにわざわざ書き込んでるんだからさすがにVBAでやりたいんだろうと思うけど。
2019/09/06(金) 22:15:50.48ID:8D+Ty/id0
>>879
一つ目は数式でできるがVBAでないと駄目なのか?
2019/09/06(金) 22:33:33.84ID:9kCZ0fBo0
質問ですが、ExcelのワークシートとVBAとでは、日付の扱い(起点?)が異なるのでしょうか?

例えば、数字の「5」をDate型で表示すると、
 ・ワークシート: 1900/01/05
 ・VBA     : 1900/01/04
 https://i.imgur.com/8Iq99R4.jpg

このように1日ズレますが、これはどういう事なのか…、これで合ってるのでしょうか?
(Excelのバージョンは2007です)

何かアドバイスを頂けると幸いです
2019/09/06(金) 22:47:22.58ID:hgPplejZ0
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」となります。


らしいぞ
2019/09/06(金) 23:27:12.11ID:9kCZ0fBo0
>>892
ソースのリンク先まで貼って頂き、ありがとうございます。
シリアル値の「1」を日付で表示した場合、やはりワークシートとVBAで起点が1日ズレてるんですね

「期限の5日前までのものを抽出する」って操作をワークシートでやってたのですが
これをVBAに置き換えたら何か結果が変で…、しばらく変だったことにも気付かず…

とりあえず、そういうものと思って注意して使うしかないですね
しかし>>848のソートもだけど、いろいろ思いがけないことがあるもんですね
2019/09/07(土) 06:45:32.58ID:fm/7EiWw0
勤務表の作成の相談です。
以前も少しさせていただいたのですが、下記の条件で作ることは可能ですか?


1月の勤務時間160時間 週40時間
週休2日
月に1度は2連休を入れる
勤務形態の組み合わせは2種類
(1)昼8、昼12、遅8、夜12
(2)昼8、遅8、夕8、夜8
夜12、夜8の次の日は休みで無くてはいけない
昼12.遅8の次の日は昼8、昼12を入れてはいけない
勤務の希望や休みの希望は必ずその通りにしなくてはいけない
経験年数によって行える業務も違うため、どの日も均等に業務ができるように組まなくてはいけない
業務内容は☆、△、□、◇、●の5種類
2019/09/07(土) 08:49:24.82ID:2KMAcAFx0
>>894
質問は可能かということだから答えるけど可能

コード晒せとか言うのであれば
長くなるのでここでは不向き

どんな形態の勤務表作るのかは知らないけど
ボタン押して勤務表の記載内容をチェックして
ダメならメッセージボックスでその旨表示して
ダメなセルを着色かなんかするようなイメージ?
2019/09/07(土) 09:13:25.23ID:a1HRPqxM0
盆正月GW諸々考慮しないでいいのか心配になる内容
完成してからの修正が本番になる予感
2019/09/07(土) 09:35:53.34ID:/U7tKF4y0
そして1から作り直した方が早い案件に
2019/09/07(土) 11:53:44.36ID:BDfXoVwZM
879
すいません、一つ目はcountfsでやれました。
2つ目が出来ません
直接、☆優先、とだけ文字を書いたところなら先頭だけ赤くできますが計算結果の文字の一部を赤くするにはどうすればいいですか?
関数でもVBAでも何でもいいです。openpyxlでも。
2019/09/07(土) 12:19:08.18ID:e9gr/jew0
Range("A1").Characters(Start:=1,Length:=1).Font.ColorIndex = 3
2019/09/07(土) 13:03:36.73ID:wEP5+xqr0
>>898
アンカの付け方覚えて
2019/09/07(土) 13:27:28.99ID:Go54LW7Ed
>>898
これは俺が悪かった。
数式に対してはセル内文字列の一部分に対して書式の設定は出来ないようだ。
条件付き書式で出来るかと思ったけど、条件付き書式もセル内文字の一部分に適用出来ない。

つまり、出来ないと思う。
2019/09/07(土) 13:39:34.44ID:bLNMu0nRM
固定値だったらできるのにね
2019/09/07(土) 19:11:14.74ID:fm/7EiWw0
>>895
勤務、休み希望を先に選択し残りの空白部分は自動で組めるようにしたいです。
2019/09/07(土) 19:34:32.24ID:QYeAlkBf0
判定や入力もVBAでやってRange.caractors(1,1)から変えればいいじゃん
2019/09/07(土) 20:03:22.01ID:Go54LW7Ed
>>904
直接数式の入ったセルに対してやりたいんだろ。
2019/09/07(土) 20:04:40.69ID:Go54LW7Ed
数式の入ったセルにRange.caractors(1,1)で書式変更しても反映されない。
2019/09/07(土) 20:05:24.41ID:wEP5+xqr0
>>903
自動部分のパターンが明確に決まってるなら出来るよ
2019/09/07(土) 20:07:08.23ID:Te09AHSkd
>>906
根性が足りないだけでは。
2019/09/07(土) 20:19:51.67ID:fm/7EiWw0
>>907
自動部分のパターンとは?
2019/09/07(土) 20:30:18.66ID:QYeAlkBf0
フツーに行単位でセルの色を変えた方が見やすいんじゃないの
2019/09/07(土) 20:38:50.56ID:wEP5+xqr0
>>909
自動で勤務の振り分けをしたいんじゃないのか?
2019/09/07(土) 20:44:02.71ID:QYeAlkBf0
セル分けれは解決じゃん
2019/09/07(土) 20:48:53.79ID:dPVmaXce0
(ほぼ)リアルタイムに状況見ながら各自が休みとか入れさせるのか、単に休みの希望だけオフラインで集めて、スケジュール担当者だけがシステム触るのかでも難易度が全然違う

今時やるなら前者で行ってもらいたいものだが、仕様考えながら完成まで一ヶ月でできるかも怪しい気がする
2019/09/08(日) 06:46:04.07ID:ntEpn96Ax
先頭の記号一文字分だけ色をつける仕様が糞仕様だと気付くことが必要だよな
2019/09/08(日) 10:33:26.83ID:8Qa/il9IM
いやでも実際文字全体をカラーにされると読みづらいから先頭の色付記号だけでアテンション引いてくれる方が見やすくてデザイン性は高いよ
2019/09/08(日) 10:51:40.94ID:ydjwDUyp0
1列追加すればいいだけだわな
917デフォルトの名無しさん (ワッチョイ 468c-q0Qg)
垢版 |
2019/09/08(日) 11:08:41.98ID:4P2DY/tr0
俺はセル内改行された文字列のセル内1行目だけを
フォント大きめで色を付けて強調させるマクロをよくつかう
2019/09/08(日) 11:26:28.31ID:8Qa/il9IM
それでも直接文字列でしょ?
IFで選択した文字列に使えないのが雑魚すぎる
VBAマジでアップデートしないかなぁ
今時continueするためにラベル+gotoが必要とかマジでお笑いだわ
2019/09/08(日) 11:40:50.50ID:Jsn8N1QVa
>>911
そうです。条件に合う勤務表を自動で作成したいです

>>913
オフラインで休み希望等を確認し担当者が入力。あとは、自動作成というのを作りたいです。
2019/09/08(日) 12:47:36.20ID:ZoBkg7d50
>>919
たぶん既に作ってる表は、一ヶ月分が1シートで横方向がその月の日、縦が氏名。その下に☆△等の個数な感じかな。
賢明なら、月初と月末にかかる一週間もそのシートに含めてあるか…(含めてないなら含めておくとプログラミングが楽になる)

対象が何人かわからないけど、条件を満たす候補が何十(百)もあるときどうするのか
そうなるなら、休み希望だけでなく出勤希望も可能とする。そうすると連休よりバラしたい人は休みの前後に出勤希望を入れればいい

プログラム的には、休みや出勤を本人希望か自動設定かを区別しておくこと(見た目でも)
あとは、粛々と仕様のロジックを組み込むだけかな

学校の時間割り作るのと似てるので、そっちで検索すると参考なることあると思う
2019/09/08(日) 13:14:35.01ID:ZoBkg7d50
>>919
他には、氏名ごとに日のあとに、2連休有無、各週、月の勤務時間なども出しておきたい

まず作るのは、仕様に合った勤務割り振りになってるかチェックするプログラム
それができていれば、自動割り振りできてなくても手作業で始められるし、できたとこから随時自動化を進めていける

仕様へのリンクメモ >>894
2019/09/08(日) 15:55:54.33ID:gw8UhjZ7d
>>918
ある程度仕方無いけど、数式とVBAは混在しない方が良い。
2019/09/08(日) 16:42:59.49ID:DiNJpUoNM
素直に条件書式アイコンセット使った方がいいんじゃね
2019/09/08(日) 19:29:36.97ID:D+CIKcq70
へー数式セルには部分書式変更できないのか
2019/09/08(日) 19:56:10.74ID:daq3SAcAa
できたきがする
2019/09/08(日) 20:09:38.22ID:8Qa/il9IM
ほんとうですかぜひやりかたおしえてください
2019/09/09(月) 08:28:39.19ID:yKP7fo1lM
>>926
出来ません
2019/09/09(月) 08:32:44.50ID:jITJ+1NGM
はい。。。
2019/09/09(月) 09:03:33.39ID:dPHfthVP0
セルにシェイプやフォームを重ねてそっちに色を付ける
別シートに値コピーして、そこに色を付ける
2019/09/09(月) 11:05:11.84ID:xwrqmUhFM
数式列を隠しにして横に値持ってきて色付ければいいんじゃないの?
どうせVBAで色付けるんでしょ?
2019/09/09(月) 15:41:30.04ID:vfxffIj9a
>>921

それもExcelで作れます?
2019/09/09(月) 17:14:48.93ID:NlORjitLM
集計とチェックは余裕でしょ
2019/09/09(月) 19:35:42.46ID:ZrI3q5QNa
昨日まで動いていたREPLACE関数が仕事しないんだけどおま環?
2019/09/09(月) 19:46:17.72ID:pVdfshuY0
>経験年数によって行える業務も違うため、どの日も均等に業務ができるように組まなくてはいけない
悩みどころがあるとすればこの均等な業務とやらが明確に決まっているかどうかだな
2019/09/09(月) 19:51:51.00ID:Q05hNtO/d
REPLACE関数はREPLACEされました。
2019/09/09(月) 19:52:51.16ID:kEQY9nVr0
>>933
マクロ無効になってるとか式に問題があるとか
2019/09/09(月) 20:14:41.08ID:myTnqEUm0
再起動して当該部のマクロ記述しなおしたら直った
原因はようわからんかったが
2019/09/09(月) 20:32:52.02ID:sEIB2HzJd
>>937
どういう風に仕事しないのか分からんが、エラーになってデバックでREPLACEが黄色になってるんだったら参照設定が壊れて、基本関数でさえ参照出来なくなる事例かな。

LEFTとかCSTRとか当たり前に使える筈のものが使えなくなった時は一番最初に疑う。
2019/09/09(月) 21:29:13.83ID:rd9NTXOir
cells.find ""で直るんでしょ
2019/09/10(火) 01:25:54.03ID:rdGJYmFn0
色々試したが数式のセルは部分書式変更できんかった
2019/09/10(火) 02:18:24.39ID:haS0qyWJd
>>933
yes
2019/09/10(火) 19:21:57.01ID:2iyftTlC0
どーーしても数式でやりたいなら列分けるぐらいしか
2019/09/10(火) 22:00:56.11ID:GeOA25JH0
素直にVBAで計算しな。
そしたらTextオブジェクトにもアクセスできる。式の部分文字列には色付けられないって、最初に言ったろ?
2019/09/10(火) 22:07:47.05ID:nVCFt/gXx
ワークシート関数で評価した結果をセルに書き込んでから書式変えるのが一番良いよ
2019/09/11(水) 22:39:41.11ID:nIT4UM9l0
勤務表作成のコードが分かりません。
どのセルにどのようなコードを入れればいいですか?
2019/09/11(水) 22:45:58.07ID:VHP4KtIo0
>>945
どういう動作をするコード?
2019/09/11(水) 23:24:32.65ID:JwEtcbaF0
>>945
エスパーじゃないので何がどう分からないのかすら分からない
全部分からないってパターンなら正直ここでは解決しないと思う
2019/09/12(木) 01:26:23.25ID:8nNrznf50
>>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)それぞれにコードを入力すれば良いのでしょうか?
また、どのようなコードを入力すれば良いのですか?
2019/09/12(木) 10:44:45.50ID:uopQqJ9E0
壊滅的にセンスと知識がないからやめたほうがいいよ
2019/09/12(木) 12:00:14.99ID:ShFpPqyA6
CSVからxlsmに一括変換するコードがネットに落ちてない…わかる人いますか?
2019/09/12(木) 12:01:46.10ID:T4sD8Hxja
全部の問題を一気に片付けようとするな
952デフォルトの名無しさん (ワッチョイ 9f8e-J3NS)
垢版 |
2019/09/12(木) 12:18:23.71ID:a4qCwAO70
馬鹿ばっかになった
2019/09/12(木) 12:24:16.91ID:0Zw0A2zsd
>>948
ちょっと何言ってるか分からない。
2019/09/12(木) 12:32:48.27ID:6dn1OjZbM
>>948
スマンがヒント下さいって程度の話なら答えられると思うけど
やり方全部分かりません全部教えて下さいって話だと他所を当たった方が良いよ
2019/09/12(木) 18:27:47.01ID:KEDDsLSod
>>950
なぜCSVを、xlsmに?
なにをさせたいのかよくわからん。
2019/09/12(木) 19:26:34.35ID:ylyw11Lkd
ググって出来なかったら諦めろ
957デフォルトの名無しさん (ワッチョイ 9f94-htbz)
垢版 |
2019/09/12(木) 19:55:19.21ID:fv2PaJmE0
>>948
隣の席の事務のオバさんに聞けば?
2019/09/12(木) 20:27:05.99ID:TkpnXyYX0
>>948
VBAはセルではななくコードエディターに入力して動かすもの
2019/09/12(木) 20:33:53.75ID:o6km/VuId
csvを列幅自動調整してxlsxに一括変換するやつなら作ったことあるけど
2019/09/12(木) 20:44:23.48ID:igJ/H+nC0
CSVそのままだと数字しかない列を数字と読んじゃうからイマイチなんだけど
0001とか1になってまうやつね
そういうのうまく文字列として読む方法ないですかVBAで
2019/09/12(木) 20:54:02.93ID:o6km/VuId
>>960
Excelで開いて上書き保存するとセルの値がそう書き換えられる仕様だったような。
2019/09/12(木) 21:07:54.40ID:TkpnXyYX0
>>960
読み込むセルの書式設定を文字列にする
2019/09/12(木) 21:37:35.27ID:rycUg+BFd
>>960
普通はExcelで開かない。
テキストとして開く。
で、独自処理。
2019/09/12(木) 21:44:44.92ID:kXsXiEi10
>>960
エクセルCSVデータが勝手に変わるのを防ぐ 文字列読み込み法
https://www.excelspeedup.com/csvmojiretsu/

『1 csvファイルをそのままの形で取り込む3つの方法
1.1 「外部データの取り込み」を使って取り込む
1.2 拡張子を「.txt」に変更して開く
1.3 テキストエディタで開きエクセルにコピー貼り付け』
2019/09/12(木) 21:52:57.62ID:TkpnXyYX0
どんな形で開いても書式設定を文字列にするか頭に ' 付けなきゃ0消えた気がするが
2019/09/12(木) 23:20:39.35ID:rycUg+BFd
いや、VBAでテキストファイルならOpen、Line Input使うとかFileSystemObject使うとかでしょ。
2019/09/13(金) 00:48:49.27ID:VS8vqVEc0
文字列として読み込めば0は消えない
あとLineInputよりクエリのがずっと速い

サンプル

Sub CSVread()
  With Worksheets("Sheet1") '読み込むシート
  With .QueryTables.Add(Connection:="TEXT;C:\tmp\test.csv", Destination:=.Range("A1")) 'ファイル名とセル位置
    .TextFilePlatform = 932 '文字コード指定
    .TextFileCommaDelimiter = True 'カンマ区切り指定
    .RefreshStyle = xlOverwriteCells 'セルに上書き
    .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat) '各列を文字列に指定
    .Refresh 'シートに読み込んで表示
    .Delete 'クエリを切断
  End With
  End With
End Sub
2019/09/13(金) 06:06:06.50ID:bJM+5H/mx
csvやjsonのような構造化されたデータの読み書きならLineInputよりクエリかな
2019/09/13(金) 19:00:24.08ID:gGtj+LYf0
>>967
LineInputもクエリも表示形式設定しなきゃ文字列として扱ってくれないと思うんだが、そうでない読み込み方があるなら教えてほしい
2019/09/13(金) 19:12:23.50ID:i6SGvTvD0
schema.ini書いてADOでいいよ、そんなもん。
2019/09/13(金) 22:45:51.27ID:GHg/1R3A0
>>967
これだとUTF8で読み込めるんだなー
ありがと
972デフォルトの名無しさん (ササクッテロル Sp73-gxlg)
垢版 |
2019/09/14(土) 21:23:34.27ID:ub8L35bYp
VBA出来る人はSQLも普通に使える人が多いのでしょうか?
2019/09/14(土) 21:32:42.15ID:2mX8de3Gd
Sの字もわかりません
2019/09/14(土) 22:28:34.89ID:WDFySUcl0
>>972
ACCESS VBAを使ってる人なら多いと思うがExcelはそれほどでもない
2019/09/15(日) 00:02:54.14ID:3V8F+GIVa
>>977
使える人もいるが、VBAerはSQLや他のプログラミング言語の知識がなく他の選択肢を持たない極めて低スキルな層が大多数を占める
2019/09/15(日) 00:04:51.24ID:tCz5SmrL0
>>977
2019/09/15(日) 06:56:48.00ID:VKeDSGtjM
低スキルで悪かったな(怒
2019/09/15(日) 07:04:00.27ID:lD21pqlQa
勉強すればいいのに
979デフォルトの名無しさん (スプッッ Sd9f-htbz)
垢版 |
2019/09/15(日) 07:09:56.72ID:bJ3fW1U+d
>>972
全く違うので関連性はありません
2019/09/15(日) 08:30:42.63ID:7adf6vSwM
世の中にはSQLが書ければコマンド一発でできることをVBAで猿のようにループ回してる糞コードが山ほどあることを考えると決して無関係ではない
無関係と思いこむことで自らの無能を正当化するのはやめなさい
2019/09/15(日) 09:42:56.34ID:VKeDSGtjM
だれもSQLとVBAが無関係とか言ってないのに何を言ってるんだよ…
VBAが使える人とSQLが使える人の話な
2019/09/15(日) 09:57:44.01ID:tCz5SmrL0
イメージは975
excel から逃れられないひとが使うイメージ
2019/09/15(日) 10:12:56.75ID:IaPtpEN9x
スレチで申し訳ないがM言語を使える人ってどれくらいいるんかね
上司の謎采配でDB導入に待ったがかかってるからExcelでPowerQueryを組んでるんだが誰にも引き継ぎ出来なくなりそうで怖い
2019/09/15(日) 10:19:11.53ID:5uhhTsGd0
PowerQueryは謎な挙動が多すぎる
2019/09/15(日) 15:08:13.09ID:M+l28bS0d
VBAよりSQLの方が簡単だからSQL覚えておくと良いと思う。
SQLはどう使うかで難しくなるけど。
2019/09/15(日) 15:09:44.24ID:M+l28bS0d
>>983
M言語は全く分からん。
やってみても良いんじゃない?
様子見もありだけど。
987デフォルトの名無しさん (ワッチョイ ff8c-gAGy)
垢版 |
2019/09/15(日) 15:30:29.07ID:vKevM/ZS0
ExcelのM言語ってMUIMPSのことなの? それとも全くの別物?
2019/09/15(日) 16:59:17.31ID:5uhhTsGd0
M言語の仕様
英語だけど。

https://docs.microsoft.com/en-us/powerquery-m/power-query-m-language-specification
2019/09/15(日) 17:58:13.89ID:k9jPpUfmp
どうしても今すぐ仕事で使いたく、無知なまま質問することをお許し下さい。
ワンクリックでセルに色が付き(塗りつぶし)、色を付けたところを再度クリック(こちらはダブルクリックが理想)すると元に戻る(白くなる)ようにしたいです。
知恵袋で近い回答を見つけたのですが範囲の指定方法が分からず。ただ、こちらは白に戻すのをワンクリックで行うため理想とは若干異なります。一応載せておきます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub '※1
Select Case Target.Interior.ColorIndex
Case Is = xlNone
Target.Interior.ColorIndex = 3 '※2
Case Else
Target.Interior.ColorIndex = xlNone
End Select
End Sub
※1:数字の 1 はA列を意味します。C列なら 3 です。
※2:数字の 3 は赤で、4=緑、5=青、6=黄、7=ピンク、8=水色、です。

難しくなってしまうようでしたら元に戻す動作もワンクリックで大丈夫です。ご教示頂けると嬉しいです。
2019/09/15(日) 18:10:30.21ID:ttkdv6CO0
>>972
高速化について調べていったら、最終的に行き着くのがSQLって感じ。
あとは、会社のPCにAccessが入ってないとか。
2019/09/15(日) 18:16:17.99ID:gmNpe+SH0
>>989
SelectionChangeは選択範囲を変更した場合のイベントだね
BeforeDoubleClickに変えればいいんじゃない
992デフォルトの名無しさん (スプッッ Sd9f-htbz)
垢版 |
2019/09/15(日) 18:22:27.35ID:SlyZta/Pd
アクセスをDBと思ってる人は少数だろう
2019/09/15(日) 18:27:50.10ID:k9jPpUfmp
>>991
ありがとうございます。beforedoubleclickに変更すると範囲指定できるようになるのでしょうか?このコードだと 1 と入力されているところが範囲指定の部分だと理解しているのですが、例えば("A1:C5")と入れてもエラーになってしまって、、
2019/09/15(日) 18:34:44.00ID:gmNpe+SH0
>>993
ならこれだ。
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Call changeCellColor(0, Target) '0は空白色を指します。

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Call changeCellColor(3, Target) 'ColorIndexに対応。3=赤、4=緑、5=青, 6=黄など。

End Sub

Private Sub changeCellColor(IndexCode As Long, Target As Excel.Range)

Dim LimitedRange As Excel.Range
Set LimitedRange = Target.Worksheet.Range("A1:E10") 'A1:E10のセル範囲み動作するが、変更を。
If Not Excel.Application.Intersect(Target, LimitedRange) Is Nothing Then
Target.Interior.ColorIndex = IndexCode
End If

End Sub
2019/09/15(日) 18:37:38.41ID:gmNpe+SH0
>>993
ちなみに元のコードは、選択セルが1行目でなければ変更、という意味になるんで座標入れてもNG.
座標で効果範囲を制限したい、ってちゃんと言っといた方がよかったね。
2019/09/15(日) 18:42:08.05ID:VJ7AKcnf0
>>994
すごい…作ってくださりありがとうございます!!
今手元にパソコンがないので明後日職場で試してみます。お時間を割いて頂きありがとうございました!
2019/09/15(日) 18:45:30.40ID:VJ7AKcnf0
>>995
なるほど…そういう意味だったのですね!ご親切にありがとうございます!
998デフォルトの名無しさん (ワッチョイ fff7-+dKN)
垢版 |
2019/09/15(日) 18:45:54.98ID:gmNpe+SH0
間違えた。元のコードは選択セルが1「列」目でなければ変更。
あとこれ、ドラッグ選択すると制限外セルの色まで変わっちゃうな。問題あれば
Target.Interior.ColorIndex = IndexCode を
Excel.Application.Intersect(Target, LimitedRange).Interior.ColorIndex = IndexCode に変えといて
2019/09/15(日) 18:49:06.25ID:VJ7AKcnf0
>>998
了解しました!どうもありがとうございます♪
1000デフォルトの名無しさん (ワッチョイ 9f8e-J3NS)
垢版 |
2019/09/15(日) 20:32:37.28ID:60BoiHy40
意味もわからずネットで見つけたコードを使う馬鹿の作ったVBA
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 83日 20時間 11分 0秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況