Excel VBA 質問スレ Part51

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sd4a-O827)
垢版 |
2017/11/08(水) 11:26:30.13ID:+KUB1/9hd

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/

※前スレ
Excel VBA 質問スレ Part50
http://mevius.2ch.net/test/read.cgi/tech/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2017/11/19(日) 22:32:44.41ID:Z3cAV0my0
wordはスレ違いだけどな
あんまりvbaと親和性もないし
あくまで文書ツールだからな
147デフォルトの名無しさん (ワッチョイ 1d03-FHhe)
垢版 |
2017/11/19(日) 22:50:31.56ID:1/mWyqVE0
おいおいExcelかてただの文書ツールやぞw
148デフォルトの名無しさん (ワッチョイ 46e9-3zcL)
垢版 |
2017/11/19(日) 22:56:21.06ID:aexN4+ic0
>>147
釣りはほどほどに
2017/11/19(日) 23:23:51.19ID:lBNHVI9l0
文書ツールとしてExcel使う奴はたくさんいるけど w
2017/11/20(月) 08:54:30.90ID:6BLE5ZLY0
>>145
まず君が貼り付けたのは何かを考えよう。
マクロ記録が示すコードを見ればInlineShapeだろう。
InlineShapeを調べれば文字列の中の位置を指定した図形ということらしい。
要は10文字目に挿入とかさ。
InlineShapeにはWrapFormatプロパティは無い。
文字列の折り返しを背景にするというのは回り込み等を自動でやるわけでその結果文字が動くだろ。
それじゃ位置を指定したことにならない。
だから出来ない。

それじゃあどうするかというと、InlineShapeをShapeに変換するというのが1つ。
InlineShapeにはConvertToShapeというのがあるから、それをShapeで受けてやればShapeにはWrapFormatプロパティがある。
Dim iShp As InlineShape
Dim Shp As Shape
Set iShp=Document("hoge.doc").Characters(10).InlineShapes.AddPicture("C:¥fuga.jpg")
Set Shp=iShp.ConvertToShape
Shp.WrapText.Type=wdWrapThrough

しかしそもそも最初からInlineShapeじゃなくてShapeを貼り付ければ問題にならない。
Set shp=Documents("hoge.doc").Shapes.AddPicture("C:¥fuga.jpg")
shp.WrapText.Type wdWrapThrough

Shapeは位置を指定出来ないといっても何文字目という意味で指定出来ないだけで、Left、Top、Width、Heightでの位置指定はできる。

今回の問題もSelectionだったな。
何のオブジェクトを触ってるのかはっきりさせずに組んでるからエラーの意味も分からない。
151デフォルトの名無しさん (オッペケ Srd1-FHhe)
垢版 |
2017/11/20(月) 12:21:51.39ID:phW/Gatbr
>>149
そらそれが本来の使い方やもの
なに勘違いしてニヤニヤしとんねんお前
気色悪い奴だな
2017/11/20(月) 13:11:30.03ID:tncAZsVja
>>151
Jカスこんなところでも下らねー釣りしてんじゃねえよ
2017/11/20(月) 15:08:27.78ID:6BLE5ZLY0
WordVBAで使いにくいのは記録出来ても良さそうなものが記録出来ない所。
ただ、これはこっちが出来ても良さそうと勝手に思ってるだけでMS的にはまずい何かが有るのかもしれない。

それよりも困るのは
Debug.Print Typename(hoge)
とやってSelectionが帰ってくる所。

型を知りたいのにSelectionは無いだろう。
2017/11/20(月) 17:44:20.81ID:PC8rzjhFa
>>153
型名調べる関数もうひとつあったよね
あんま使わんから忘れたけど
155デフォルトの名無しさん (ワッチョイ 46e9-jGnz)
垢版 |
2017/11/20(月) 19:16:12.47ID:3EUEsxu/0
>>153
笑ったw
156デフォルトの名無しさん (ワッチョイ a961-RjUU)
垢版 |
2017/11/20(月) 19:56:44.52ID:HiJj2X0L0
>>153
? typename(hoge)とやったら
Emptyと出てきたぞ。
あなた↓の頭と同じでカラッポ。
2017/11/20(月) 21:46:53.19ID:dynAF7sP0
>>150 ありがとうございます。 じつはそれで解決しました。
マクロで記録したらinlineshapeで、なんやねんこれ?と理解していなかったことが原因でした。
158デフォルトの名無しさん (ワッチョイ a960-IKRN)
垢版 |
2017/11/20(月) 22:35:57.11ID:bUEYENj70
前スレ943様の下記ファイル、もう一度upしていただく訳にはいきませんでしょうか。
DLしようと思いながら、失念していて、先ほどしようとしたところ消えてしまっていました。
943様、お手数をおかけしますが何卒よろしくお願いいたします。

943デフォルトの名無しさん (ワッチョイ 06e9-FqSh)2017/11/05(日) 15:01:02.75ID:2uRc+T650>>944>>958
>>942
写真は辞めてくれ。見るのめんどくさい

出てきたからあげるわ
大体やりたいことはこれだと思う
・設定シートのB列に表示したいもの。C列は入力する文字を入れる
・入力シートのA1に「う」と入れて決定。リストが現れて「東京」「北海道」が現れるので選択する
もちろん「う」じゃなくても「東」なんかでもいい。場合によってはB列に「渋谷」とかいれてもいいかもしれない
https://dotup.org/uploda/dotup.org1380568.zip.html

自分で言うのも何だがこれ超便利。かなりオススメ
159デフォルトの名無しさん (ワッチョイ 46e9-jGnz)
垢版 |
2017/11/20(月) 23:57:02.00ID:3EUEsxu/0
こういう時はせめてエクセルアップロードできるアップローダーぐらい探してくると良いぞ
2017/11/21(火) 02:44:24.85ID:eIBN2cFq0
>>156
www
hogeをなんだと思ってる?
そりゃそのまま打てばEmptyが帰ってくるだろう。
hogeで察してくれんかね。

カラッポなのは誰の頭だよ。
2017/11/21(火) 13:03:45.67ID:OSkNtsZi0
途中経過はどうでもいいから結果を教えろ って人間がどんどん増えてんだな 経営者かよ
2017/11/21(火) 16:28:44.72ID:7aGtp6cN0
結果はいいから途中経過を教えろ、なんて頭おかしいだろ何言ってんだか
2017/11/21(火) 17:41:32.87ID:rp//GM45a
>>162
普通は結果教えてもらうなら過程も学ぶんだよ
まあ、別に学びの場じゃないけどね
ただ、腐ってもプログラムだからな
結果だけ知ってもその場しのぎ以上にはならんだろ
164デフォルトの名無しさん (スップ Sd22-A9yG)
垢版 |
2017/11/21(火) 18:15:13.21ID:22dwRLVAd
世の中は論理的にできているのに>>162が論理的でないのはなぜなのか
165デフォルトの名無しさん (ワッチョイ 46e9-IwP8)
垢版 |
2017/11/21(火) 19:38:11.84ID:49Yzjg710
>>164
単に逆裏待遇を理解していないだけかと
2017/11/21(火) 21:45:55.72ID:vcSymdG+d
vbaを勉強中の者です。
市販で売られている本など調べても載っていないのですが、for文で使われる変数名が「i」ですが、なぜ「i」なのですか?
「i」の意味を教えて頂けませんか?

既出でしたらすみません
167デフォルトの名無しさん (ワッチョイ 02eb-Ti+n)
垢版 |
2017/11/21(火) 21:52:07.73ID:x41b941k0
>>166
iterationのiって事でいいじゃん
168デフォルトの名無しさん (ワッチョイ 46e9-IwP8)
垢版 |
2017/11/21(火) 21:58:13.94ID:49Yzjg710
>>166
>167の通りだけど、もう完全に形骸化している
「i」でもいいし「ページ番号」など日本語表記でもいい
ちなみに俺は「k」から「m」「l」「n」と続ける
単に見間違いにくいように
2017/11/21(火) 22:07:12.83ID:L3nv/JJz0
今グーグル先生に聞いたらFORTRANからの名残だってでてきた
2017/11/21(火) 22:14:29.41ID:wrH3tJZg0
>>169
昔読んだVBだかVBAだかの書籍にはトピックとして掲載してた書籍もあったような記憶が
2017/11/21(火) 22:17:05.57ID:vcSymdG+d
>>167-169
ありがとうございます!
ホント助かりました!
引っ掛かり進まなかったので、これで進みます。
納得できてよかったです
ありがとうございます
2017/11/21(火) 22:17:55.51ID:vcSymdG+d
>>170さんもレスありがとう!
2017/11/21(火) 22:18:54.65ID:2WJixd7Q0
integerのiだと思ってたわ
2017/11/21(火) 22:47:14.99ID:FV1Lkm8B0
>>166
数学でijkは行列などの添え字で使う。
fortranでネストしたループ回すときって、微分方程式を離散化したものを解いたりするパターンが多くて、
二次元や三次元の多次元配列を使ってるだろうから、自然とijkになる。

で、数学のiはintegerからきてる、といったぐあいでは?
2017/11/21(火) 23:38:11.98ID:vcSymdG+d
>>173、174
数学からなんですか?!
プログラムと数学は違うものと思っていました。ありがとう
2017/11/22(水) 06:03:08.32ID:nhDpu2iz0
今から60年前にアメリカのIBM社で開発されたFORTRAN(フォートラン)というコンピューター言語があって
そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり
ループカウンターは整数だからFOR文でもIを使ったという歴史がある

一方で昔のBASIC言語ではすべての変数が実数型というのが基本仕様だったので、Iを使う意味はあまりなかったけど、
FORTRANに憧れた世代が書き方を真似してそのまま定着した

という年寄りの昔話
2017/11/22(水) 18:32:45.15ID:mA48vywq0
>>175
数学、論理学とは非常に近しいと思う。
関数型プログラミングてスタイルもあるし、
数学の証明をある程度自動化する言語もある。CoqとかAgdaとか。

VBAにもそろそろ高階関数が欲しいですね、MSさん期待してます。
2017/11/22(水) 18:50:12.14ID:k1sKIAfY0
愛があるからかと思った
179デフォルトの名無しさん (ワッチョイ bdc3-Vht8)
垢版 |
2017/11/22(水) 18:53:30.30ID:/wgdkUUe0
ループカウンタにi、j、kを使うようになったのはC言語の影響が一番大きい。
2017/11/22(水) 20:12:17.87ID:Ce6/du3cM
どこまで使う?
自分はnまで。
ループ変数以外で1文字の変数は使わない。
2017/11/22(水) 20:20:06.35ID:t2AK8w6Da
出来ればkまでにしたいね。
実際は思うようにいかなくて俺もnぐらいまで使ったことある。
でも1文字辞めることもある。
182デフォルトの名無しさん (ワッチョイ 46e9-RjUU)
垢版 |
2017/11/22(水) 20:57:00.17ID:fITl6ULj0
>>180
あんまり1文字変数は使わない
処理行数や処理列数などを使ってるわ
年取ると覚えるのが大変なんだよ
2017/11/22(水) 21:18:19.80ID:W0SJQGiTM
>>176
> そこで変数名の頭文字がI以降なら整数型と定義されたのが始まり
嘘書くなよ...
X, Y, Z が整数型とかあり得んわ
2017/11/22(水) 21:46:50.38ID:T8s4U7Y50
最近デザパタに凝っててイテレーターパターンやってるけどなかなかいいよ
まあいかに多重ループしないかは大事だわ
2017/11/22(水) 21:49:25.89ID:HR2X/8WF0
イテレータと多重ループ回避って関係あったっけ?
2017/11/22(水) 21:55:38.62ID:T8s4U7Y50
>>185
いやまあ、見た目上ループ変数は減るからw
よってるからよくわからんなってるわ
すまん
2017/11/22(水) 22:48:54.39ID:HR2X/8WF0
VBAでイテレータパターンて難しそうだ

ループをなくす、って方向の方が良さそうです。
2017/11/22(水) 22:51:49.31ID:HR2X/8WF0
方向の方w
189デフォルトの名無しさん (ワッチョイ 229c-AWKa)
垢版 |
2017/11/22(水) 23:20:15.38ID:pTVfJfW70
Excel2010です。
文字列を引数に文字列を返すユーザ定義関数を作りました。
アドインにしてチーム内に配布しようと思ってます。
試しに新規ブックで使ってみたところ、開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。
関数の中の処理を全て消しても保存確認メッセージがでます。
文字列を返すだけの関数なので、保存確認メッセージを出ないようにしたいのですが、どうすればよいでしょうか。
190デフォルトの名無しさん (ワッチョイ bfe9-rwnT)
垢版 |
2017/11/23(木) 00:02:49.97ID:Kpe6aW6i0
>>189
中身を見ないとわからない
Function Foo(bar As Long)
Foo = bar * 2
End Function
と作ってみたけど
>開くたびに変更していないのに保存確認メッセージが出るようになってしまいました。
この減少は起きなかったよ
何か別の所に原因があると思う
2017/11/23(木) 06:39:11.72ID:Y2T7cP8D0
>>189
それって要するにvlookupの事?
192デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
垢版 |
2017/11/23(木) 13:05:29.27ID:IQVJTYbd0
>>190
簡単に書くとこんな感じの関数です。

Function Kubun(code as string) as string
if (left(code,3) = "123") then Kubun = "A"
end function

if文が大量に続くので共通化してアドインで配布しようと思ってます。
これをKubun.xlbとしてアドインフォルダに保存しました。

新規BookでセルA1に123、セルB1に =Kubun(A1) と入力したところ
セルB1にAと表示され、関数は機能しました。
その後保存した新規Bookを開き何もせず閉じようとすると保存確認メッセージがでます。
193デフォルトの名無しさん (ワッチョイ 5feb-g2WY)
垢版 |
2017/11/23(木) 13:22:13.30ID:fJlhhdGs0
>>192
再計算されてるから
値は変化しないけどセルの内容は更新されていると予想
2017/11/23(木) 13:42:02.49ID:UTTVtMan0
>>192
アトインって *.xla じゃなかったっけ?
*.xlb だとなんかいいことあるの?
(ツールバー設定とかを記憶するファイルだと思ってた)
195デフォルトの名無しさん (スップ Sd7f-cUxe)
垢版 |
2017/11/23(木) 14:06:43.11ID:1VQF43Qed
>>192
xlbってなんだっけ?
xlamじゃないの?
196デフォルトの名無しさん (スップ Sd7f-cUxe)
垢版 |
2017/11/23(木) 14:07:06.07ID:1VQF43Qed
かぶった
197デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
垢版 |
2017/11/23(木) 14:35:16.43ID:IQVJTYbd0
すいません。拡張子は違ったかもしれません。
2017/11/23(木) 15:49:16.74ID:AvEDQSYF0
>>192
ネットで検索してみると回答は>>193氏の「再計算」で正解だと思うよ
そのユーザー定義関数の中で使ってる関数の中に再計算が発生する関数が含まれているのでは?

簡単な例でいくと新規ブックのセルA1に=TODAY()と入力し確定、そのブックを保存し閉じる
そのブックを開くとTODAY関数による再計算が発生するため何もせずに閉じようとしても保存確認出る
それと同じことでは
199デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
垢版 |
2017/11/23(木) 17:02:33.93ID:IQVJTYbd0
>>198
192の通り使っているのはif文とLeft関数だけです。
試しに関数の中の処理を全て消してみたのですが、
状況は変わりませんでした。
2017/11/23(木) 17:02:38.88ID:mWIv05A8x
>>114
要らない
2017/11/23(木) 17:22:13.82ID:k3nQdCAx0
>>199
おそらく

A1が変わってないときに、=Kubun(A1) という式が必ず同じ値を返すという「保証」ができないので
B1セルが変更されている可能性を排除できない
ということで変更されている(可能性がある)と判断されてる

ユーザ定義関数は中身チェックしないで非決定的だって判断だな
シート開くときに再計算するかどうかのオプション設定なかったっけ?最悪手動かな
202デフォルトの名無しさん (ササクッテロレ Spfb-g2WY)
垢版 |
2017/11/23(木) 17:30:51.41ID:JDomtUrWp
>>199
その関数にDebug.print 文を仕込んでおいて
呼ばれたかどうかを確認してみたら?
203デフォルトの名無しさん (ワッチョイ 7f3f-h3cN)
垢版 |
2017/11/23(木) 19:42:47.05ID:IQVJTYbd0
>>201
保存確認メッセージを防ぐ方法はないですかね?

>>202
関数は呼ばれていますが、それだと何か方法ありますか?
204デフォルトの名無しさん (ワッチョイ 5feb-g2WY)
垢版 |
2017/11/23(木) 20:00:32.08ID:fJlhhdGs0
>>203
関数が呼ばれると言うことは変更されると言うことだから
保存確認ダイアログが出るのが普通

savedプロパティを変更する方法とか
calculationプロパティをマニュアルにする方法とか
方法はあるかもしれないけど
他の問題が起きるようになるかもしれない
2017/11/23(木) 23:21:24.29ID:SB9DcOfL0
Application.DisplayAlerts = False
のこと?
206デフォルトの名無しさん (ワッチョイ 27a4-cUCq)
垢版 |
2017/11/24(金) 11:41:27.83ID:h1FhSyIp0
質問です。Excel 2016で、Autofilerされたシートの内容を参照するために

(wsはワークシートオブジェクトです)
Debug.Print ws.AutoFilterMode     →この結果は True
Debug.Print ws.AutoFilter.FilterMode  →この結果も True
Dim rgFilter As Range
Set rgFilter = ws.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)

For Each e In rgFilter
  Debug.Print e
Next e

こんな感じで参照しようとしてるんですが、
参照してるシートでフィルターが掛かっていても、いなくても
同じように全件(25行なら25行)がイミディエイトに表示されます。
絞り込まれた結果のみを表示するためにはどうしたら良いのでしょうか?
2017/11/24(金) 11:52:22.18ID:BOT2k7iW0
>>206
Set rgFilter = ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
2017/11/24(金) 12:05:42.58ID:h1FhSyIp0
>>207
素早いご回答ありがとうございます。
修正してみましたが、今度は絞込みあり/なし何れも1行だけになりました

何だか難しい操作ですねえ…
2017/11/24(金) 12:12:04.66ID:h1FhSyIp0
Dim MaxRow As Long
MaxRow = ws.Range("A" & Rows.Count).End(xlUp).row

これを追加して、
Set rgFilter = ws.Range("A1:A" & MaxRow).CurrentRegion.SpecialCells(xlCellTypeVisible)

にしてみても、結果は>>206と同じになりました。
んー謎です
2017/11/24(金) 13:34:47.29ID:bxAooAvMa
>>203
あるにはあるけどクソめんどくさいぞ
すべてのセルの初期値保持しといて、閉じるときに確認して値に変更なければsavedをtrueにしてから閉じる、とかね
211デフォルトの名無しさん (イモイモ Se0f-u0W/)
垢版 |
2017/11/24(金) 16:52:13.42ID:x6NJ51zce
Sheets("Sheet1").Columns(2).Insert Shift:=xlToLeft
Sheets("Sheet1").Columns(2).Insert Shift:=xlToRight

この二行の動作の差が分からないので
違いを教えてください
2017/11/24(金) 17:34:32.78ID:HKDmIDHRH
>>211
現在のcolumns(2)の中身が左にずれるか、そのままか、かな?
当てずっぽうだけど。
213デフォルトの名無しさん (ワッチョイ 5f58-h3cN)
垢版 |
2017/11/24(金) 19:18:42.44ID:V+PY16OM0
>>204
>>210
アドインをあきらめます。
ありがとうございました。
214デフォルトの名無しさん (アウアウオー Sa1f-h3cN)
垢版 |
2017/11/25(土) 12:49:09.41ID:roqaXNhOa
エクセルVBAですがあるシートで入力し別のシートに転記するというコードを記入しているのですが
For文でやろうとするとうまくいきません。元々のシートの行が11行目から始まり転記先のシートが2行目から始まるのでネストを使って以下のようにコードを組んでみたのですが2行目の入力データが転記先のデータに2行追加されてしまいました。
1行目と2行目はそれぞれ別のデータが記述されておりそのまま転記できるようなコードにしたいです。
もしかしたら、そもそもforだとだめなのかもしれません。ちなみに入力するデータが11行目から始まり終わりは20行目で終わります。
がとりあえず繰り返し構文でできればかまいません。下記のコードをどう変えればいいか教えてください。
Sub 登録()
Set syougai = Sheets("障害記録") 'シート名にて指定しているので変更しない事
Set itigi = Sheets("一時データ") 'シート名にて指定しているので変更しない事
Const hiduke As Long = 19 '日付列の定数
Const gouki As Long = 17 '号機の列の定数
Const era As Long = 18 'エラーコードの列の定数
Const hyou1 As Long = 11 '障害集計表上の定数
Const kisyu As Long = 21
Const syuukei1 As Long = 21
For i = 2 To 3
For j = 11 To 12
itigi.Cells(i, 1).Value = syougai.Cells(j, hiduke).Value '日付
itigi.Cells(i, 2).Value = syougai.Cells(j, gouki).Value '号機
itigi.Cells(i, 3).Value = syougai.Cells(j, kisyu).Value '機種
itigi.Cells(i, 4).Value = syougai.Cells(j, era).Value 'エラーコード
itigi.Cells(i, 5).Value = syougai.Cells(j, syuukei1).Value '集計データ
i = i + 1
j = j + 1
Next j
Next i
End Sub
215デフォルトの名無しさん (ワッチョイ 7f81-h3cN)
垢版 |
2017/11/25(土) 13:36:20.17ID:fp6T8Ewd0
〉〉214
ネストの使い方間違ってると思うのですがどう直せばいいのかわかりません。
2017/11/25(土) 13:39:02.15ID:Sg1k8TV00
>>214
itigi じゃなくて itiji にしろ
シート名「にて」はやめてシート名「で」にしろ
i = i + 1 と j = j + 1 は不要なので消せ
2017/11/25(土) 13:55:20.06ID:QhU2UVSF0
>>214
単純にシートで開始行がずれているだけなら

For i = 2 to 3
itigi.Cells(i, 1).Value = syougai.Cells(i +9, hiduke).Value
以下略
Next

でいいんじゃないでしょうか
ループはネストすると
内側のループだけ全部回して外に抜ける、を外のループの回数
だから、ネストでは意図した動作にならないでしょう
>>216も言っているけど、Nextで変数に勝手に+1されるから足さなくていい
218デフォルトの名無しさん (ワッチョイ 7f81-h3cN)
垢版 |
2017/11/25(土) 14:08:02.51ID:fp6T8Ewd0
ありがとうございました。
できました。
219デフォルトの名無しさん (スップ Sdff-cUxe)
垢版 |
2017/11/25(土) 15:25:06.65ID:P/RTUJJid
てか hiduke なんて変数名使うくらいなら「日付」のほうが10倍まし
2017/11/25(土) 17:03:29.39ID:dlgn0p0Vx
そもそもVBAでやることなのかな
転記先の一時データのシートのセルに障害記録シートのセルを参照する式を書くだけで良くない?
2017/11/25(土) 17:17:31.37ID:4suMRhlB0
変数名ぐらい自由にしてやれw
2017/11/25(土) 17:23:34.66ID:Yv0FOuti0
>>214
値を取得しながら転記しようとするから混乱する
コレクションなり配列なりに一回格納してから転記するようにすればネスト要らん
2017/11/25(土) 17:30:52.78ID:Yv0FOuti0
>>221
変数名は大事でしょ
こいつの変数の付け方は最悪に近いわ
代入の式見なかったらなんのことだかわからねー
2017/11/25(土) 17:32:47.09ID:+Jz8ZPqE0
本人できたって言ってるのにグダグダ言う奴ウザイわ
2017/11/25(土) 17:35:56.02ID:ISZ6M3sb0
hidukeと日付のどちらか選べと言われたら、hidikeを選ぶ。
2017/11/25(土) 17:37:28.74ID:S5e4mFeJd
仕事内容を記録するエクセルを作成したく、
シート名は各個人名でフォームを開くボタン設置。
登録用に必要項目をフォームで作り、転記するサンプルマクロを書いたんですが、今後必要項目が増えたり、減ったりしたときに人数分フォームを弄ったりマクロ書き換えるのは面倒ななんですけど、一個をものを共有し使用するにはどうしたらいいですか?

各個人のエクセルを開き、作ったボタンで共通のエクセルを開きフォームを開いて転記させるとか?

共通のエクセルを読み取り専用で開き書き込む時に自分のエクセルを開いて転記させるとか?

なんかうまいやり方ないですか?
2017/11/25(土) 17:42:32.82ID:Sg1k8TV00
>>225
何が言いたいんだW
228デフォルトの名無しさん (ワッチョイ 47b3-g2WY)
垢版 |
2017/11/25(土) 17:52:49.62ID:M1jU9gED0
>>226
シート毎つまり人毎にボタンを作るなら
そのボタンをクリックした時にその人独自の値をグローバル変数とかに代入して
フォームは共通のものを呼び出す

フォームに入力されたものを書き込む時は
さっきのグローバル変数を見て
書き込み先のシートとかを特定する
229デフォルトの名無しさん (ワッチョイ 47b3-g2WY)
垢版 |
2017/11/25(土) 17:53:40.22ID:M1jU9gED0
>>228
同時に複数の人がそのエクセルファイルを使わない事が前提だけど
2017/11/25(土) 18:31:33.42ID:S5e4mFeJd
>>229
同時に開くことがあるんですよ。
2017/11/25(土) 18:33:58.83ID:MqKvnHus0
>>226
一つのエクセルファイルを複数人で同時に使うのはいろいろ大変だと思う。
共有共通にせず個人毎に違うファイルを使ってもらって、
仕事内容記録フォルダに入ってるファイル全てをまとめて集計するマクロを作った方がよさそ。
2017/11/25(土) 18:34:51.02ID:Sg1k8TV00
>>230
データはなんでもいいからDBに書き込んでエクセルはインプット画面として割り切りなさい
マジで
2017/11/25(土) 18:38:42.16ID:Yv0FOuti0
エクセルの共有はマジで地雷
運用を見直した方がいい
234デフォルトの名無しさん (ササクッテロラ Spfb-g2WY)
垢版 |
2017/11/25(土) 19:34:05.10ID:PrfYax++p
>>230
入力するのが一人で他の人が見るだけなら問題ない

複数人が同時に書き込むならエクセルじゃなくて
ウェブアプリとかにした方が良いと思う
2017/11/25(土) 19:37:11.17ID:T5+qbkCf0
mdbを複数ユーザーで同時に掴めるなら、SQLでデータを投げれば動作するんじゃないの。
入力フォーム作りがクソ面倒くさいからエクセルでやるのは愚策中の愚策なのは確かだけど。
2017/11/25(土) 19:44:15.61ID:4suMRhlB0
>>223
健康のためなら死ねるタイプ?w
ごめんけど理解不能
2017/11/25(土) 19:46:52.39ID:4suMRhlB0
どうしてもエクセルだけでやりたいなら、フォームとデータでファイル別けるべきだね
2017/11/25(土) 20:15:23.25ID:Yv0FOuti0
>>236
いや、常識だろ
自分でメンテするにしたって嫌だわ
239デフォルトの名無しさん (ワッチョイ dfeb-g2WY)
垢版 |
2017/11/25(土) 20:24:47.32ID:fZkth5mu0
フォームボタンをクリックした時に
グローバル変数とかに時刻なり、その人のIDなりを記録して
編集中である事が分かるようにしておく

書き込んだらクリアする

他の人がフォームボタンをクリックしたら
編集中かどうかチェックして
編集中なら後で再実行するようにダイアログを出す
2017/11/25(土) 20:38:06.48ID:4suMRhlB0
>>238
お前の常識とか知らんし興味もない。
他人の変数名にケチ付けるのは常識じゃなくてエゴだろ
2017/11/25(土) 20:40:07.39ID:99QBz+fh0
React では、データアクセス(CRUD)部分は、
Flux の、Store という部分で、 UI とは完全に分離させている

nmp の、immutable パッケージで、データを変更不能にしたり
2017/11/25(土) 20:41:41.46ID:4suMRhlB0
日本語でおk
2017/11/25(土) 21:19:48.45ID:d0mIe/tRa
変数名は結構考えるけどな。
普段なら辞書サイトでその意味の英単語から付けることが多い。
API使えば変数名の重要性が分かる。
2017/11/25(土) 21:53:57.63ID:Sg1k8TV00
>>243
それは変数名と言うより引数名でしょ?
それだったら確かに大事
2017/11/25(土) 22:00:33.02ID:T5+qbkCf0
個人的に引数含む変数名に半角英字は避けるように徹底してる。
予約語と被らなくなるし徹底すれば読みやすいしね。

一般的に、名前に半角英数使うのはコンパイラが2バイト文字対応していない事が理由なんで、
対応しているコンパイラには積極的に2バイト文字で投げた方がいい。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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